面向对象
封装
把数据封装起来,不然外部随便访问;把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏;
继承
让某个类型的对象获得另一个类型的对象的属性的方法;继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。
1、子类拥有父类非private的属性和方法。
2、子类可以拥有自己属性和方法,即子类可以对父类进行扩展。
3、子类可以用自己的方式实现父类的方法。
1、父类变,子类就必须变。
2、继承破坏了封装,对于父类而言,它的实现细节对与子类来说都是透明的。
3、继承是一种强耦合关系。
多态:
同一件事有多种做法;允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作;
Java实现多态有三个必要条件:继承、重写、向上转型。
继承:在多态中必须存在有继承关系的子类和父类。
重写:子类对父类中某些方法进行重新定义,在调用这些方法时就会调用子类的方法。
向上转型:在多态中需要将子类的引用赋给父类对象,只有这样该引用才能够具备技能调用父类的方法和子类的方法。
构造方法
子类可以继承父类的属性和方法,除了那些private的外还有一样是子类继承不了的---构造器。对于构造器而言,它只能够被调用,而不能被继承。 调用父类的构造方法我们使用super()即可。
proctected
对于protected而言,它指明就类用户而言,他是private,但是对于任何继承与此类的子类而言或者其他任何位于同一个包的类而言,他却是可以访问的。
static:静态
类变量、方法 通过类名直接调用;
非静态不能调用静态;
不能以任何形式引用this、super。
final:
修饰变量 成为常量;
修饰方法,方法不能被覆盖;
修饰类,类不能被继承;
抽象类 abstract
抽象类不能被实例化,实例化的工作应该交由它的子类来完成,它只需要有一个引用即可。
抽象方法必须由子类来进行重写。
只要包含一个抽象方法的抽象类,该方法必须要定义成抽象类,不管是否还包含有其他方法。
抽象类中可以包含具体的方法,当然也可以不包含抽象方法。
子类中的抽象方法不能与父类的抽象方法同名。
abstract不能与final并列修饰同一个类。
abstract 不能与private、static、final或native并列修饰同一个方法。
接口 interface
一个Interface的方所有法访问权限自动被声明为public。确切的说只能为public;
接口中可以定义“成员变量”,“成员变量”会自动变为为public static final
接口中不存在实现的方法。
实现接口的非抽象类必须要实现该接口的所有方法。抽象类可以不用实现。
不能使用new操作符实例化一个接口,但可以声明一个接口变量,该变量必须引用(refer to)一个实现该接口的类的对象。可以使用instanceof检查一个对象是否实现了某个特定的接口。例如:if(anObject instanceof Comparable){}。
区别
抽象类在java语言中所表示的是一种继承关系,一个子类只能存在一个父类,但是可以存在多个接口。
在抽象类中可以拥有自己的成员变量和非抽象类方法,但是接口中只能存在静态的不可变的成员数据,而且它的所有方法都是抽象的。
抽象类所代表的是“is-a”的关系,而接口所代表的是“like-a”的关系。
内部类
在类的内部定义一个类
每个内部类都能独立地继承一个(接口的)实现,所以无论外围类是否已经继承了某个(接口的)实现,对于内部类都没有影响
内部类中不能存在任何static的变量和方法;
内部类是依附于外围类的,所以只有先创建了外围类才能够创建内部类。
.this
使用.this后,得到时创建该内部类时使用的外围类对象的引用,new则是创建了一个新的引用
直接创建一个内部类对象
.new 关键字
OutClass.InnerClass obj = outClassInstance.new InnerClass();
方法内部类
嵌套在方法和作用域内,有这样一种内部类,它是嵌套在方法和作用于内的,对于这个类的使用主要是应用与解决比较复杂的问题,想创建一个类来辅助我们的解决方案,到那时又不希望这个类是公共可用的,所以就产生了局部内部类,局部内部类和成员内部类一样被编译,只是它的作用域发生了改变,它只能在该方法和属性中被使用,出了该方法和属性就会失效。
匿名内部类
1、 匿名内部类是没有访问修饰符的。
2、 new 匿名内部类,这个类首先是要存在的。
3、 匿名内部类是没有构造方法的。
静态内部类
它的创建是不需要依赖于外围类的。
它不能使用任何外围类的非static成员变量和方法。