封装继承多态一直以来是java的最基本功能,起着不可缺少的作用,小伙伴们知道该如何封装继承多态吗?在以下文章中,小编将会用几个例子,为你解答疑惑。

-----------------封装--------------

1、什么叫类

拥有相同属性和方法的很多很多的对象的集合,叫做类public class 类名

{

属性

方法

}

2、什么叫对象

实实在在存在的事物就叫做的对象

3、方法

一般方法分为两部分,方法原型和方法实现public void run()

{ //方法原型

System.out.println("我在跑步!"); //方法实现

}

关于方法原型:public 返回类型 方法名(参数列表)

4、属性

属性最大的问题的是,不能对赋值进行判断,所以需要封装

5、封装的好处

(1)对象的属性和方法是一个整体,不可分割

(2)保证数据安全性

(3)保证数据有效性 在方法加条件判断

6、如何进行封装:

属性的封装

1、将所有的属性加上private

2、为属性加上get/set方法

3、用set/get方法进行赋值取值

方法的封装

1、把方法名前面的public改为private

2、私有方法一定要在公共方法里面去调用

一般所有的属性都要私有,但是方法根据需要来私有

-------继承-------------

1、什么是继承?

子类继承父类,然后子类能自动拥有父类的一些属性和方法,这就是继承

2、为什么要用继承?

为了简化代码,所以我们需要用继承。相同的功能交给父类去实现,然后子类继承父类后能自动拥有这些功能,并实现功能扩展、多态

3、继承的语法?public class 子类 extends 父类

{}
public class 大学生
{
String name;
int age;
char sex;
public void 读书()
{}
}
public class 中学生
{
String name;
int age;
char sex;
public void 读书()
{}
}
public class 小学生
{
String name;
int age;
char sex;
public void 读书()
{}
}

学生中一种 is-a

把相同属性和方法放在父类中定义,然后让各个子类继承父类public class 学生

{
String name;
int age;
char sex;
public void 读书()
{}
}
public class 大学生 extends 学生
{
public void 读恋爱()
{}
}
public class 中学生 extends 学生
{
public void 上网()
{}
}
public class 小学生 extends 学生
{
public void 撒娇()
{}
}

四、子类能继承到什么?

父类的私有成员和方法;父类的构造;

除了这两个无法继承,其他都可以

五、哪些类可以继承

凡是满足“is-a”(xx是一种xx)关系的,都可以继承。

六、单继承和单方向

单方向:子类能继承父类,但父类不可以继承子类

单继承:一个子类只能有一个直接父类

七、Object

所有类的祖宗类

八、继承的原理

new 一个子类对象出来的时候,先造出父类对象,然后再生子类对象

儿子没有东西就会找父亲拿

九、super

创建子类时,会自动先调用父类的构造。子类调用父类构造使用关键字super。比如class A

{
public A()
{
System.out.println("A出生了");
}
}
class B extends A
{
public B()
{
super(); //这句代码就算不写,系统也会自动帮我们添上。一定保证先运行A的构造,再来运行B的构造
System.out.println("B出生了");
}
}

但如果我们在A里面自己写了个带参构造,那么无参的构造会自动消失。这时候请记得去子类修改构造class A

{
//自己写了个带参构造,那么不带参数的构造会自动消失
public A(int a)
{
System.out.println("A出生了");
}
}
class B extends A
{
public B(int a)
{
super(a); //为了避免子类构造报错,请自己手动调用带参的父类构造
System.out.println("B出生了");
}
}

自己调自己的构造用this()

子类调父类的构造用super()

--------------------------多态--------------------------------------

1、两种多态

方法重载:静态多态。方法相同,由于参数不同,产生不同的结果。

方法重写:动态多态。方法相同,由于执行不同,产生不同的结果。

重载,是同一个类调用的相同方法,根据不同条件产生出的不同结果;比如同一个厨师做饭,给的原材料不一样,能做出不一样的菜肴

重写,是不同类调用的相同方法,根据调用人的不同产生不不同结果;比如一家三兄弟都去洗衣服,有的可能手洗有的可能机洗

2、重写

同一个动作(方法名相同,参数相同,返回值类型相同)由不同的对象来做,结果不同

伏明霞.跳水(); //拿了世界冠军

青蛙.跳水(); //潜水

小猪.跳水(); //死了

大学生.消费(100);//买玫瑰送女友

小学生.消费(100);//存起来

中学生.消费(100);//上网,买东西吃

3、实现动态多态的步骤

得有继承

有方法的重写

有父类的引用指向子类对象

4、多态的实现:public class 父类

{
String name = "张三";
public void 睡觉()
{
System.out.println("父亲睡是躺着睡的");
}
public void 走路()
{}
}
public class 子类 extends 父类
{
String name = "李四";
int age = 10;
public void 睡觉()
{
System.out.println("儿子睡是侧着睡的");
}
public void 上网()
{}
}

a、属性无多态父类 father = new 子类();

System.out.println(father.name); //张三

b、方法有多态父类 father = new 子类();

father.睡觉(); //儿子睡是侧着睡的

c.子转父类,父类相同的方法会被子类覆盖,子类独有的方法会被隐藏父类 father = new 子类();

father.走路();

father.睡觉();

father.上网(); //错误 儿子转为父亲,儿子独有的属性或方法会被隐藏

System.out.println(father.name);

System.out.println(fahter.age); //错误

子类 son = (子类) father; //父转为子,儿子独有的属性或方法会恢复

son.上网();

System.out.println(son.age);

以上就是今天的全部内容了,相信你一定大有收获吧。