2021年1月19~21日 Java面向对象相关

 =========================================================== 

方法=方法声明+方法功能主体

=======================
在抽取事物共性时,分析阶段由下往上,代码实现阶段由上往下

=======================
抽象类中可以没有抽象方法,可以有只有普通方法

====================================

抽象类描述的一般是实体,接口一般描述的是额外的功能
=====================
接口中定义的属性全部都是静态常量,写不写修饰符,都是public static final

接口中定义的方法全部都是公共抽象,写不写修饰符,都是public abstract

但是接口本身是受修饰符影响的,不写是在本包内可以被实现,写public是所有位置都能被实现
======================
同时继承和实现时,先写继承再写实现:

====================

类、接口中的继承与实现

类和类的关系:单继承

类和接口的关系:多实现
接口和接口的关系:多继承
===========================

静态方法只能访问静态成员变量:
(如果静态方法能访问普通成员变量,那不需要创建对象就能访问普通成员变量,显然是不行的)

 

 ====================================================

构造方法在继承中的问题:

首先看一个实例:

 

 产生这样的输出结果是因为:子类构造方法中会隐式地加一条super();

也就是执行一下父类的构造方法。为的是初始化父类的成员变量,然后再继承。

 

再分析下图报错的原因:

 

 由于子类构造方法中有隐式的一行super(),但是我们在父类中手动写了重载后的构造方法,原来编译器自动添加的Father()就没了。

所以子类找不到Father(),就会报错

 

解决办法1:
在父类中显式定义一个默认构造方法:

解决办法2:

在子类构造方法中显式调用一个父类的构造方法:

 =======================================================

多态中向上转型和向下转型的应用:

举例:

有三种类:

1、人 People 有张开嘴的功能

2、美国人 American 继承自人,有说英语的功能

3、法国人 French 继承自人 ,有说法语的功能

这三个类在代码中实现是这样:

 

这时如果想设计一个方法,传入People类型的对象,根据他是美国人还是法国人,从而调用不同的方法,这里就用到了多态、以及多态中的向下转型

 

posted @ 2021-01-21 19:16  lucascube  阅读(61)  评论(0)    收藏  举报