一:什么是封装性、继承性、多态性
封装性:通俗说就是一个盒子,多个对象、功能、组件等装在一个盒子里,内部具体是什么不知道,用到它时,使用特定方法或功能去调用它。即声明一个变量(其属性值是private)不能给其变量直接赋值,但可以通过方法构造去复制。意思近似于软件工程中讲到的黑盒测试。
继承性:通俗说就是实际生活中儿子与父亲就是继承关系,制作了一台电脑,再想生产时直接按照已生产出来的那台电脑生产就行,不必再研究其细节。即发生在两个类之 间,子类继承父类的所有属性或方法,但该属性或方法不是private类型,继承的属性或方法访问权限不变。
多态性:该特性是在继承性的基础上来说的,父类可以有多个子类,每个子类可以有各自的不同的方法
二:java代码解释封装性、继承性、多态性
编码解释:现有3种乐器:小提琴violin、钢琴piano、小号trumpet
1.封装性
class violin{
private double price; '定义属性价格
public void play() {system.out.println("violin Plays");} '定义方法:演奏
public void tune() {system.output.printin("violin tune")} ‘定义方法:校音
}
class piano {
private double price; '定义属性价格
publicv oid play() {system.out.println("piano Plays");} '定义方法
public void tune() {system.output.printin("piano tune")}
}
class trumpet{
private double price; //'定义属性价格
public void play() {system.out.println("trumpet Plays");} //定义方法
public void tune() {system.output.printin("trumpet tune")}
}
public class test '定义新的类
{
public static void main (int,string[]) //定义新的方法 main,
{
violin1 =new violin(); //用new 定义创建对象,以便后面调用
piano2 =new piano ();
trumpet3 =new trumpet();
s1.tune(); //调用对象的方法
s2.tune();
s3.tune();
s1.play();
s1.play();
s1.play();
}
}
注意加背景色部分:1.定义类,用关键字class 2.属性为私有的,方法为公共的
2.封装性
以上不足之处就是:乐器不仅有价格属性,还有品牌等属性,如果我要添加新的属性,必须一个个的添加,我如果要添加100个,怎么办,一个个添加,未必太麻烦,继承性可以解决以上问题
abstract class instrument //抽象出一个类
{
double price; //价格
string brand; //品牌
public void play(); //演奏,只是定义了一个方法的接口,具体怎样实现没给出
public void tune(); //调音
}
class violin extends instrument
{
//次时的属性会自动继承抽象的类的属性,就不用写了
public void play(){system.out.println("violin Plays");} //定义方法,怎样实现
public void t une(){system.output.printin("violin tune")}
}
class piano extends instrument
{
public void play(){system.out.println("piano Plays");} //定义方法
public void tune(){system.output.printin("piano tune")}
}
class trumpet extends instrument
{
publicvoid play(){system.out.println("trumpet Plays");} //定义方法
publicvoid tune(){system.output.printin("trumpet tune")}
}
public class test //定义新的类
{
public static void main(int,string[]) //定义新的方法 main,
{
violin1=new violin(); //用new 定义创建对象,以便后面调用
piano2 =new piano();
trumpet3 =new trumpet ();
s1.tune(); //调用对象的方法
s2.tune();
s3.tune();
s1.play();
s1.play();
s1.play();
}
}
注意:1.属性值类型为默认的,因为要继承。属性必须不是私有的
2.先抽象出一个类,此类有属性和方法,但方法只定义了一个方法的接口,具体怎样实现没有给出
3.继承用关键字extend表示
4.实际类中就不用写类的属性了,就自动继承抽象类的属性了
3.多态性
【总结访问控制符】以上不足之处是:乐器必须排队即violin表演完piano、trumpet才能表演,多态性可以解决以上问题
在继承的代码上写:
public class test //定义新的类
{
public void yanzou(instrument x) //定义一个新的方法,乐器 参数为x
{
x.play(); //当给对象传递不同的x时,不同的方法被调用
)
public static void main(int,string[]) //定义新的方法 main,
{
violin1 =new violin(); //用new 定义创建对象,以便后面调用
piano2 =new piano();
trumpet3 =new trumpet();
s1.tune(); //调用对象的方法
s2.tune();
s3.tune();
s1.play();
s1.play();
s1.play();
}
instrument ss1 =new violin(); //定义新的对象
instrument ss2 =new piano();
instrument ss2 =new trumpet();
test a=new test(); //定义新的对象
while(!乐谱结束) //体现多态,对不同的对象传同样的消息做出不同的反应,结束条件是乐谱结束
{
instrument a=读取下一个演奏对象
a.play();
}
}
java中不知道循环多少次时用while
java中访问控制符就是被声明的东西可以被谁使用,就如公司中的机密文件,那些人可以看,那些人不可以看
java中共有4中访问控制符
public:共有的
private:受保护的
default:默认的
private:私有的