19/4/15面向对象高级
1.关键字:
this的作用:
this.属性名
this.方法名()
this.调用构造器
static的作用:
变量 public static final int a = 10
方法
静态代码块
final的作用:
类(不可以被继承)
方法
静态代码块
abstract的作用:
抽象的,只有声明没有实现,如果一个类中有一个抽象方法,那么这个类必须定义为抽象类,有子类去实现
extends的作用:
子类对父类的继承
2.继承
规则:
Java中支持单继承,就是说每个类只有一个父类,不允许有多重继承
一个父类可以有多个子类
子类继承父类所有的属性和方法,但不继承父类的构造方法
注意:
所有类默认继承Object
继承是Java中科重用的一种体现
语法 以及 重写(class B中对class A中的 a 重写):
class A{
public void a(){
System.out.println("a");
}
}
class B extends A{
public void a(){
System.out.println("b");
}
}
重载
class C{
public void c(){}
public void c(int a)P{}
}
3.多态:
作用:继承多态可以优化我们程序设计,但是不能提高程序的效率。继承多态后期多用于查看api文档
满足条件:要有继承关系 方法重写 父类的引用指向子类的对象 例如:A x = new B()
语法:
//关于喜欢酒的一个多态描述
class Wine {
String s = "剑南春";
public void fun() {
System.out.println("父类中wine的方法fun..........");
}
}
class JNC extends Wine {
// 子类剑南春重载父类wine
// 重写父类中的fun1a
String s = "女儿红";
public void fun() {
System.out.println("JNC子类的方法 fun.............");
}
}
public class Ceshi {
public static void main(String[] args){
Wine wine = new JNC(); //父类中的引用 指向 子类中的对象
wine.fun();
System.out.println(wine.s);
}
}
4.abstract 抽象类
如果一个类中有一个抽象方法,那么这个类一定是抽象类(方法只有声明,没有实现),子类负责实现抽象该方法
当父类的某些方法不确定时,可以用abstract关键字来修饰该方法[抽象方法],用abstract来修饰该类[抽象类]。
我们都知道,父类是将子类所共同拥有的属性和方法进行抽取,这些属性和方法中,有的是已经明确实现了的,有的还无法确定,那么我们就可以将其定义成抽象,在后日子类进行重用,进行具体化。这样,抽象类也就诞生了。
例如,定义了“动物”父类,其中“动物名称”和“动物年龄”属性已经明确了,但是“动物叫”的方法没有明确,此时就可以将“动物叫”定义为抽象方法。
所以,抽象类是为了把相同的但不确定的东西的提取出来,为了以后的重用。定义成抽象类的目的,就是为了在子类中实现抽象类。
语法:
package javastudy;publicclass AbstractDemo1 {
publicstaticvoid main(String[] args) {
}
}// 这就是一个抽象类abstractclass Animal {
String name;
int age;
// 动物会叫
public abstract void cry(){
// 不确定动物怎么叫的。定义成抽象方法,来解决父类方法的不确定性。抽象方法在父类中不能实现,所以没有函数体。但在后续在继承时,要具体实现此方法。
}
// 抽象类可以被继承
// 当继承的父类是抽象类时,需要将抽象类中的所有抽象方法全部实现。
class cat extends Animal {
// 实现父类的cry抽象方法
public void cry() {
System.out.println("猫叫:");
}
注意:
1.用abstract修饰的类,即抽象类;用abstract修饰的方法,即抽象方法。
2.抽象方法不能有方法主体。格式如下:
abstrac tvoid xxx();
3.抽象类不能被实例化。因为抽象类中方法未具体化,这是一种不完整的类,所以直接实例化也就没有意义了。
4.抽象类中不一定要包含abstrace方法。也就是了,抽象中可以没有abstract方法。
5.一旦类中包含了abstract方法,那类该类必须声明为abstract类。
抽象类不能被实例化。因为抽象类中方法未具体化,这是一种不完整的类,所以直接实例化也就没有意义了。
抽象类不能被实例化。因为抽象类中方法未具体化,这是一种不完整的类,所以直接实例化也就没有意义了。
抽象类中不一定要包含abstrace方法。也就是了,抽象中可以没有abstract方法。