JAVA学习笔记-面向对象的三大特征
继承:
package Study;
public class TestAnimal {
int eys = 2;
public void run(){
System.out.println("我可以跑");
}
public void eat(){
System.out.println("我可以吃");
}
public void sleep(){
System.out.println("我可以睡");
}
}
class dog extends TestAnimal{
public void jiao(){
System.out.println("我可以叫");
}
}
class bird extends TestAnimal{
public void run(){
System.out.println("我可以飞");
}
}
封装/隐藏:
-为什么需要封装?封装的作用和含义?
·我要看电视,只需要按一下开关和换台就可以了。有必要了解电视机内部的结构吗?有必要碰碰显像管吗?
·我要开车,...
-隐藏对象内部的复杂性,只对外公开简单的接口。便于外界调用,从而提高系统的可扩展性,可维护性。
-我们程序设计要追求"高内聚,低耦合"
·高内聚就是类的内部数据操作细节自己完成,不允许外部干涉;
·低耦合:仅暴露少量的方法给外部使用。
封装要点:
-类的属性的处理:
1.一般使用private.(除非本属性确定会让子类继承)
2.提供相应的get/set方法来访问相关属性,这些方法通常是public,从而提供对属性的读取操作。(注意:boolean变量的get方法是用:is开头!)
-一些只用本类的辅助性方法可以用private,
希望其他类调用的方法用public
多态:
多态性是OOP中的一个重要特性,主要是用来实现动态联编的,换句话说,就是程序的最终状态只有在执行过程中才被决定而非在编译期间就决定了。这对于大型系统来说能提高系统的灵活性和扩展性。
java中如何实现多态?使用多态的好处?
引用变量的两种类型:
·编译时类型(模糊一点,一般是一个父类)
由声明时的类型决定。
·运行时类型(运行时,具体是哪个子类就是哪个子类)
由实际对应的对象类型决定。
多态的存在要有3个必要条件:
要有继承,要有方法重写,父类引用指向子类对象。
instanceof运算符
它的作用是判断其左边对象是否为其右边类的实例,返回boolean类型的数据。可以用来判断继承中的子类的实例是否为父类的实现。
例子:
package Study;
public class TestPolymorphism {
String str = "123";
public void voice(){
System.out.println("普通动物的叫声");
}
public static void TestVoice(TestPolymorphism a){
if( a instanceof catcat){
((catcat) a).catchMouse();
}
a.voice();
}
public static void main(String[] args){
TestPolymorphism a = new catcat();
TestVoice(a);
}
}
class dogdog extends TestPolymorphism {
public void voice(){
System.out.println("我是一只小狗,汪汪汪~");
}
}
class catcat extends TestPolymorphism{
public void voice(){
System.out.println("我是一只小猫,喵喵喵~");
}
public void catchMouse(){
System.out.println("抓老鼠");
}
}
class pigpig extends TestPolymorphism{
public void voice(){
System.out.println("我是一只小猪,哼哼哼~");
}
}