A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 阿杜 初级黑马   /  2016-5-5 21:41  /  450 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


A:封装概述
        * 是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。

* B:封装好处
        * 隐藏实现细节,提供公共的访问方式
        * 提高了代码的复用性
        * 提高安全性。
* C:封装原则
        * 将不需要对外提供的内容都隐藏起来。
        * 把属性隐藏,提供公共方法对其访问。

面向对象特征
        * 封装(encapsulation)
        * 继承(inheritance)
        * 多态(polymorphism)
final修饰特点
        * 修饰类,类不能被继承
        * 修饰变量,变量就变成了常量,只能被赋值一次
        * 修饰方法,方法不能被重写

static关键字的特点
        * a:随着类的加载而加载
        * b:优先于对象存在
        * c:被类的所有对象共享
                * 举例:咱们班级的学生应该共用同一个班级编号。
                * 其实这个特点也是在告诉我们什么时候使用静态?
                        * 如果某个成员变量是被所有对象共享的,那么它就应该定义为静态的。
                * 举例:
                        * 饮水机(用静态修饰)
                        * 水杯(不能用静态修饰)
                        * 共性用静态,特性用非静态
        * d:可以通过类名调用
                * 其实它本身也可以通过对象名调用。
                * 推荐使用类名调用。
                * 静态修饰的内容一般我们称其为:与类相关的,类成员

A:static的注意事项
        * a:在静态方法中是没有this关键字的
                * 如何理解呢?
                        * 静态是随着类的加载而加载,this是随着对象的创建而存在。
                        * 静态比对象先存在。
        * b:静态方法只能访问静态的成员变量和静态的成员方法
                * 静态方法:
                        * 成员变量:只能访问静态变量
                        * 成员方法:只能访问静态成员方法
                * 非静态方法:
                        * 成员变量:可以是静态的,也可以是非静态的
                        * 成员方法:可是是静态的成员方法,也可以是非静态的成员方法。
                * 简单记:
                        * 静态只能访问静态。

静态变量和成员变量的区别
* 静态变量也叫类变量  成员变量也叫对象变量
* A:所属不同
        * 静态变量属于类,所以也称为为类变量
        * 成员变量属于对象,所以也称为实例变量(对象变量)
* B:内存中位置不同
        * 静态变量存储于方法区的静态区
        * 成员变量存储于堆内存
* C:内存出现时间不同
        * 静态变量随着类的加载而加载,随着类的消失而消失
        * 成员变量随着对象的创建而存在,随着对象的消失而消失
* D:调用不同
        * 静态变量可以通过类名调用,也可以通过对象调用
        * 成员变量只能通过对 象名调用

#格式的解释:
        public static void main(String[] args) {}
        * public 被jvm调用,访问权限足够大。
        * static 被jvm调用,不用创建对象,直接类名访问
        * void被jvm调用,不需要给jvm返回值
        * main 一个通用的名称,虽然不是关键字,但是被jvm识别
        * String[] args 以前用于接收键盘录入的

A:继承(extends)
        让类与类之间产生关系,子父类关系

继承的好处和弊端
* A:继承的好处
        * a:提高了代码的复用性
        * b:提高了代码的维护性
        * c:让类与类之间产生了关系,是多态的前提
* B:继承的弊端
        * 类的耦合性增强了。
       
        * 开发的原则:高内聚,低耦合。
        * 耦合:类与类的关系
        * 内聚:就是自己完成某件事情的能力
* A:Java中类的继承特点
        * a:Java只支持单继承,不支持多继承。(一个儿子只能有一个爹)
        * b:Java支持多层继承(继承体系)
        Java中类的继承特点
                * 如果想用这个体系的所有功能用最底层的类创建对象
                * 如果想看这个体系的共性功能,看最顶层的类
* A:继承的注意事项
        * a:子类只能继承父类所有非私有的成员(成员方法和成员变量)(private String name;可以通过setXxxx和getXxxx方法获取)
        * b:子类不能继承父类的构造方法,但是可以通过super关键字去访问父类构造方法。
        * c:不要为了部分功能而去继承
* B:什么时候使用继承
        * 继承其实体现的是一种关系:"is a"。
        采用假设法。
                如果有两个类A,B。只有他们符合A是B的一种,或者B是A的一种,就可以考虑使用继承。
* A:this和super都代表什么
        * this:代表当前对象的引用,谁来调用我,我就代表谁
        * super:代表当前对象父类的引用
* B:this和super的使用区别
        * a:调用成员变量
                * this.成员变量 调用本类的成员变量,也可以调用父类的成员变量
                * super.成员变量 调用父类的成员变量
        * b:调用构造方法
                * this(...)        调用本类的构造方法
                * super(...)        调用父类的构造方法
        * c:调用成员方法
                * this.成员方法 调用本类的成员方法,也可以调用父类的方法
                * super.成员方法 调用父类的成员方法
继承中构造方法的关系
        * 子类中所有的构造方法默认都会访问父类中空参数的构造方法
        * 因为子类会继承父类中的数据,可能还会使用父类的数据。
        * 所以,子类初始化之前,一定要先完成父类数据的初始化。
        * 其实每一个构造方法的第一条语句默认都是:super() Object类最顶层的父类。
* 父类没有无参构造方法,子类怎么办?
        * super解决                //a,若子类空参构造:直接传递实际参数(super(实际参数))去访问父类有参构造;this(实际参数)访问本类有参构造super(形参)
        * this解决                //b,若子类有参构造:super(形参)访问父类有参构造.

* B:注意事项
        * super(…)或者this(….)必须出现在构造方法的第一条语句上

A:多态(polymorphic)概述
        * 事物存在的多种形态
* B:多态前提
        * a:要有继承关系。
        * b:要有方法重写。
        * c:要有父类引用指向子类对象。
多态中的访问特点: 属性(编译看父类,运行看父类) 静态绑定; 行为(编译看父类,运行看子类,static修饰的除外) 先静态绑定,后动态绑定.
多态中向上向下转型:
首先要有向上转型(父类引用指向子类对象),然后才能向下转型
Person p = new SuperMan();   SuperMan sm = (SuperMan)p;

A:抽象类的成员特点
        * a:成员变量:既可以是变量,也可以是常量。abstract是否可以修饰成员变量?不能修饰成员变量
        * b:构造方法:有。
                * 用于子类访问父类数据的初始化。
        * c:成员方法:既可以是抽象的,也可以是非抽象的。
抽象类的成员方法特性:
        * a:抽象方法 强制要求子类做的事情。
        * b:非抽象方法 子类继承的事情,提高代码复用性。

一个抽象类如果没有抽象方法,可不可以定义为抽象类?如果可以,有什么意义?
        * 可以
        * 这么做目的只有一个,就是不让其他类创建本类对象,交给子类完成

接口中的成员变量和成员方法:
成员变量:只能是常量,并且是静态的 公共的.
        默认修饰符:public static final,建议自己手动给出.
构造方法: 接口中没有构造方法.
一个类不写继承任何类,默认继承object类
成员方法:只能是抽象方法.默认修饰符是 public abstract

类与类:                继承关系,只能单继承,可以多层继承
类与接口:        实现关系(implements),单实现,多实现.class A implement B,C
接口与接口:        继承关系(extends),单继承,可多继承.

接口的设计理念
  抽象类被继承体现是 "is a" 的关系. 定义该继承体现的<共性功能>.
  接口被实现体现的是 "like a" 的关系. 接口中定义的是该继承体系的<扩展功能>.

day10:面向对象
Package是文件夹,将字节码文件进行分类存放.
编译带包的类:
javac -d . 类名.java
java 包名.类名

package java.util.Scanner;
package 导入的是具体的类(Scanner)

内部类:
内部类可以无条件的直接访问外部类的成员,包括私有.
class Outer {
        class Inner {
                show();
        }
}
外部类要访问内部类的成员,必须创建对象:
外部类名.内部类名 对象名 = 外部类对象.内部类对象
Outer.Inner oi = new Outer().new Inner();

链式编程:
        每次调用方法后还能继续调用方法,
        证明调用方法后返回的是对象.


匿名内部类本质: 继承了该类或者实现了

该类接口的一个子类对象.


8.简述==和equals的区别?
        答:参考答案
                (1)==是一个比较运算符号,既可以比较基本数据类型,也可以比较引用数据类型,基本数据类型比较的是值,引用数据类型比较的是地址值
                (2)equals方法是一个方法,只能比较引用数据类型,所有的对象都会继承Object类中的方法,如果没有重写Object类中的equals方法,
                        equals方法和==号比较引用数据类型无区别,重写后的equals方法比较的是对象中的属性


























































































































































































































1 个回复

倒序浏览
这是没写完?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马