JAVA笔记六(21-24 对象转型(多态性)、面向对象应用、抽象类和抽象函数)

来源:互联网 发布:淘宝自动上传宝贝软件 编辑:程序博客网 时间:2024/05/29 05:56

二十一、对象的转型(重要)面向对象多态性的体现

1.对象的向上转型

向上转型:将子类的对象赋值给父类的引用;

Student s = new Student();

Person p = s;

这两句也可以这样写:    Person p = new Student();

一个引用能调用那些成员(变量和函数),取决于这个引用的类型;但是它调用哪一个变量和函数,取决于这个引用所指向的对象。

public class Test{public static void main(String[] aegs){//Student s = new Student();//Person p = s;p.name ="lisi";p.age = 20;s.address ="bj";s.introduce();p.introduce();}}

运行结果


2.对象的向下转型

将父类的对象赋值给子类的引用;(向下转型的前提是向上转型)

Student s1 = new Student();

Person p = s1;

Student s2 = (Student)p;  //必须强制类型转换。


public class Test{public static void main(String[] args){Person p = new Student();Student s = (Student)p;//错误的向下转型:因为不是所有的Person对象都是Student.就像不是所有的long都是int一样。//Person p = new Person();//Student s = (Student)p;  }}

二十二、面向对象应用(一)

面向对象需要解决的问题就是:如何适应需求的不断变化。

例子:HP打印机、佳能打印机:可以抽象出一个打印机类,把重复的成员方法放在父类;各个子类,添加或者重载函数;

1.如果碰到定义两个类,成员方法有重复的时候,尝试使用继承,把重复代码集中到父类上;

2.不管碰到任何有重复代码的情况,要有意识去去除重复代码。

二十三、抽象类和抽象函数

1.抽象函数的语法特征

什么是抽象函数:只有函数的定义,没有函数体的函数被称为抽象函数;(函数的定义:返回值类型、函数名和参数列表组成。)

abstract    void     fun();

2.抽象类的语法特征

什么是抽象类:使用abstract定义的类;

抽象类特点:1)不能够生成对象; 2)如果一个类当中包含有抽象函数,那么这个类必须被声明为抽象类; 3)。抽象类中也可以没有抽象函数。

abstract class Person{String name;int age;void introduce(){System.out.println("my name is "+name+ ", age is" + age);}abstract void eat();}

3.抽象类的作用

抽象类是一个基类,用来作为父类,子类复写父类中的抽象函数;

抽象类不能生成对象,但是可以拥有构造函数;不能直接调用抽象类的构造函数生成对象,但是抽象类的子类可以调用抽象类的构造函数(super():)


abstract class Person{String name;int age;Person(){}Person(String name, int age){this.name = name;this.age = age;}void introduce(){System.out.println("my name is "+name+ ", age is" + age);}abstract void eat();}
class chinese extends Person{String address;chinese(){//super();  如果没有加这句,编译器会自动加上。}chinese(String name, int age, String adress){super(name,age);this.address =address;}void eat(){System.out.println("eat with chopsticks");}}

二十四、为什么用抽象类

抽象类表达了一种概念。


抽象类的作用:在每个子类某个函数的方法体都不一样的时候,父类将此函数写为抽象函数,强制子类将此函数复写。


如果一段代码在语义上是有错误的,那么在语法上也应该是有错误的。这是未实现的。所有写代码的时候要注意语义和语法的统一。

原创粉丝点击