黑马程序员-笔记-04-基础

来源:互联网 发布:淘宝卖家体验中心 编辑:程序博客网 时间:2024/06/05 23:54

---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------

java的特性之多态:
多态提高了代码的复用性,提高了程序的扩展性。
多态的实现:
1.存在继承
2.存在方法重写
3.使用父类引用指向子类对象。
多态的局限性:
使用了父类的引用,所以只能调用父类的方法。
多态中:成员函数的特点。
1.编译时,参考,引用变量所属类是否有该方法。
2运行时,参考实现类(实例对象)所有的方法。

多太重成员变量与静态方法的特点:
全部参考参考变量所属的类。

java的内部类:
现实理解:事物中可能包含其他食物,这些组成事物需要其他外部事物的支持。
java中内部类可以做成员变量或者局部变量,具体情况,列于下面的程序中。

内部类做局部变量。内部变量是没有修饰符的。如果内部类做局部变量要访问其他局部变量,那么其他局部变量不需使用final修饰。
成员内部类依然可以访问外部类的成员变量。
public class Play08 {public static void main(String[] args) {Outer1 out1 = new Outer1();out1.getIn();//外部其他类中,直接建立内部类的书写格式,内部类不许是private修饰符。Outer1.Inner1 in1 = new Outer1().new Inner1();in1.getX();//外部类其他类中建立,静态内部类的格式。Outer1.Inner3 in2 = new Outer1.Inner3();in2.getJ();}}class Outer1{private int i = -1;private static int j = -9;//内部类可以直接访问外部类的成员变量。 class Inner1{ //非静态内部类中不能有静态量。//public static int k = 0; int i =100;public void getX(){//内部类中其实有一个外部类的实例。System.out.println("Outer i"+Outer1.this.i);//此处的Outer1.this可以省略。System.out.println("Inner i"+i);new Inner3();}} //内部类可以是private修饰符,此时不能在外部其他类建立该内部类。 private class Inner2{}  //内部类被static修饰,此时这个内部类只能访问外部类的静态量。 static class Inner3{public static void getJ(){System.out.println(j);} }public void getIn(){//外部类访问内部类,建立内部类的实力。Inner1 in = new Inner1();in.getX();}public static void getIn2(){//外部静态方法,要访问内部类,内部类必须为静态。Inner3 in3 = new Inner3();in3.getJ();Inner3.getJ();//Inner1 in1 = new Inner1();}}

java抽象类:abstract 当多个类中出现相同功能,但是功能主体不同,这时可以进进向上抽取。这时只抽取功能定义,而不抽取功能主体。抽象就是笼统的,不具体的,看不懂的。
 
特点:
1.抽象方法一定在抽象类中。(还有接口。)
2.抽象方法和抽象类都必须被abstract关键字修饰。
3.抽象类不可以用new创建对象,因为调用抽象方法没意义。但是抽象类依然会有构造方法。
4.抽象类中的抽象方法要被使用,必须由子类复写齐所有的抽象方法后,建立子类对象调用。
5.如果子类只覆盖了部分抽象方法,那么该子类还是一个抽象类。也就是说,有抽象方法的类,必然是抽象类。
6.抽象类中可以不定义抽象方法,虽然这样可能丧失了抽象的作用,但这样是是不让该类建立对象。


java接口: interface 
java支持单继承类,多实现接口。implements
接口中成员的特点:
1. 接口中没有变量:全部是常量。使用
public static final修饰。
2.接口中的所有的方法中全部是抽象的,使用public abstract修饰。 
接口的特点:多继承、他是一个对外暴露的规则。增强了程序的扩展性。降低了程序的耦合性。 接口与接口是继承关系。
通常情况下:需要将基本的功能定义在各个实现类中, 扩展方法和公共的则放在接口中。

 接口是没有构造函数的:因为它内部根本就没有变量需要初始化,他的变量全部由final修饰为常量。
从这个方面说,所以抽象类是依然有构造函数的,他虽然不能直接new,但是他的实现类,依然需要使用它的构造函数对他内部变量进行初始化。 

原创粉丝点击