---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IOS开发</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------
1,面向对象:
封装:隐藏对象的属性和实现细节,仅对外提供公共访问方式
继承: 多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那个类即可。
多态: 一个对象在程序不同运行时刻代表的多种状态,父类或者接口的引用指向子类对象
2、类和对象:
类:对现实世界中某类事物的描述,是抽象的,概念上的定义。
对象:事物具体存在的个体。
3:成员变量和局部变量的区别:
作用域
成员变量:针对整个类有效。
局部变量:只在某个范围内有效。(一般指的就是方法,语句体内)
存储位置
成员变量:随着对象的创建而存在,随着对象的消失而消失,存储在堆内存中。
局部变量:在方法被调用,或者语句被执行的时候存在,存储在栈内存中。
当方法调用完,或者语句结束后,就自动释放。
初始值
成员变量:有默认初始值。
局部变量:没有默认初始值,使用前必须赋值。
4、匿名对象
匿名对象就是没有名字的对象。是对象的一种简写形式。
应用:只调用一次类中的方法。
可以作为实际参数在方法传递中使用
5、封装:指隐藏对象的属性和实现细节,仅对外提供公共访问方式。
将变化隔离,方便使用,提高复用性,提高安全性。
6、构造方法:一般情况下,我们的自定义类都要手动给出无参构造方法。
7、构造代码块:
(1)作用:给对象进行初始化,对象一建立就执行,而且优先于构造函数执行
(2)构造代码块和构造函数的区别:
构造代码块是给所有不同对象的共性进行统一初始化;
构造函数是给对应的对象进行初始化。
8、this关键字
(1)this关键字代表本类对象的一个引用,谁调用this所在的方法,this就代表谁
(2)this的使用场景
a,用于区分同名成员变量和局部变量;
b,在定义函数时,该函数内部要用到调用该函数的对象时,因为此时对象还没建立,故this代表此对象;
c,构造函数间调用,this必须作为第一条语句存在。
9, 单例设计模式有两种方式:a,饿汉式 当类加载的时候,就创建对象。
classStudent {
privateStudent(){}
privatestatic final Student s = new Student();
publicstatic Student getInstance() {
returns;
}
}
b,懒汉式 当使用的使用,才去创建对象。
classStudent{
privateStudent(){}
privatestatic final Student s = null;
public static Student getInstance() {
if(s==null){
//线程1就进来了,线程2就进来了。
s= new Student();
}
returns;
}
}
开发常用饿汉式,因为饿汉式简单安全。懒汉式多线程的时候容易发生问题。
继承
把很多类的相同特征和行为进行抽取,用一个类来描述。让多个类和这个类产生一个关系。
java中用extends关键字表示。
java中只能单继承,没有多继承。
java可以有多重(层)继承。
继承的好处:
继承的出现提高了代码的复用性。
继承的出现让类与类之间产生了关系,提供了多态的前提。
构造方法:
子类的实例化过程
子类创建对象时,会先去创建父类的对象。
默认是去调用父类的无参构造方法。
子类构造方法中,第一行默认是super()。
当父类没有无参构造方法时,必须使用this或者super调用其他的构造方法。
this和super的区别:
this:代表本类对象的引用。
super:代表父类的存储空间。
final关键字
可以用于修饰类,方法,变量。
final修饰的类不能被继承。
final修饰的方法不能被重写。
final修饰的变量是一个常量。只能被赋值一次。
内部类只能访问被final修饰的局部变量。
抽象类:abstract
多个类有相同的方法声明,但是方法体不一样。这个时候,我们考虑把方法声明进行抽取。
让子类继承后,自己去实现方法体。没有方法体的方法,我们需要用抽象标志下。
该方法称为抽象方法,包含抽象方法的类就是抽象类。
特点:a,抽象类和抽象方法都要用abstract进行修饰
b,抽象类不能被实例化
c, 抽象类中不一定有抽象方法,但是,有抽象方法的类一定是抽象类。
成员变量: 抽象类中可以有变量,也可以有常量。
成员方法: 抽象类中可以有抽象方法,也可以有非抽象方法。
构造方法:抽象类是一个类,所以,它有构造方法。虽然本身不能实例化。但是可以给子类实例化使用。
接口interface
当一个类中的方法都是抽象的时候,java提供了另一种表示方式,叫接口。
a,是对外暴露的规则
b,是功能的扩展
c,接口的出现降低耦合性。
d,接口可以多实现。如:CPU和主板、笔记本的USB插口、插座
用interface关键字表示。类与接口关系用implements表示。
成员变量: 默认修饰 public static final
成员方法: 都是抽象的,默认修饰 public abstract
类与类的关系: 是继承关系。类与类只能单继承,可以多重继承。
类和接口的关系: 是实现关系。类可以多实现接口。 类在继承一个类的同时,可以实现多个接口。
接口和接口的关系: 是继承关系。接口可以多继承接口。
接口和抽象类的区别:抽象类只能被单继承,接口可以多实现,接口的出现避免了多继承的局限性。
抽象类:
成员变量:可以是变量,也可以是常量
成员方法:可以是抽象方法,也可以是非抽象方法
构造方法:有构造方法
接口:
成员变量:是常量。默认修饰 public static final
成员方法:都是抽象方法。都有默认修饰 public abstract
构造方法:没有构造方法
抽象类中定义的是继承体系中的共性功能;接口中定义的是继承体系中的扩展功能。
抽象类被继承是"is a"关系:x是y的一种; 接口被实现是"like a"关系:x像y的一种。
多态: 同一个对象,在程序不同时刻的多种运行状态。举例:动物,狗是狗,狗是动物。 存在着继承或者实现关系;父类(接口)引用指向子类(实现)对象。
利:多态的存在提高了程序的扩展性和后期可维护性
弊:虽然可以预先使用,但是只能访问父类中已有的功能,运行的是后期子类的功能内容。
不能预先使用子类中定义的特有功能。
多态中对象调用成员的特点
Fu f =new Zi();
抽象类只能被单继承成员变量: 编译看左边,运行看左边
成员方法:编译看左边,运行看右边
静态方法:编译看左边,运行看左边
instanceof关键字:用于判断某个对象是否是某种类型。
格式: 对象名instanceof子类(实现)名
Object类:是所有类的根类,超类。
java中提供的类以及我们自定义的类都直接或者间接的继承自Object类。
Object类中的方法:
void finalize() ;当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。
Class getClass() ;获取对象的字节码文件的描述类
String name = s.getClass().getName();
int hashCode() ; 获取对象的哈希值,是对象的内存地址值十进制表示
String toString();返回对象的字符串表示。
格式:getClass().getName()+"@"+Integer.toHexString(hashCode());
boolean equals(Object obj) ;用于比较两个对象的地址值是否相同。
==
可以用于比较基本数据类型,比较的就是基本数据类型的值是否相等。
可以用于比较引用数据类型,比较的是对象的地址值是否相等。
equals
equals只能用于比较引用数据类型的。
Object提供的equals是用于比较对象地址值是否相同。
自定义类中,如果重写了equals方法,按照自己的需求来比较。
---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IOS开发</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------
详细请查看:<a href="http://edu.csdn.net" target="blank">http://edu.csdn.net</a>