JAVA
学习内容:
-
1 java 多态
2 java 对象转型
3 java 抽象类
理想和现实总是有差距的,幸好还有差距,不然,谁还稀罕理想?
1 java 多态
面向对象的三大特性:封装、继承、多态。从一定角度来看,封装和继承几乎都是为多态而准备的
指允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式
多态存在的三个必要条件
一、要有继承;
二、要有重写;
三、父类引用指向子类对象。
父类
public class Text {
static void animalCry(Animal a){
a.shout();
}
public static void main(String[] agrs){
Dog s1=new Dog();
Cat s= new Cat();
System.out.println(s1);
System.out.println(new Cat());
animalCry(s1);
animalCry(s);
animalCry(new Cat());
}
子类
public class Animal {
public void shout(){
System.out.println("A big voice");
}
}
class Dog extends Animal{
public void shout(){
System.out.println(" wang wang");
}
public void seedoor(){System.out.println("See Door ");}
}
class Cat extends Animal{
public void shout(){
System.out.println("meow meow");
}
public void catchMouse(){
System.out.println(" catch mouse");
}
}
class Mouse extends Animal{
}
2 java 对象转型
父类引用指向子类对象,我们称这个过程为向上转型,属于自动类型转换。
向上转型后的父类引用变量只能调用它编译类型的方法,不能调用它运行时类型的方法。这时,我们就需要进行类型的强制转换,我们称之为向下转型!
父类
public class Text {
static void animalCry(Animal a){
a.shout();
}
public static void main(String[] agrs){
Animal a= new Dog();
a.shout();
a =(Dog)a;
((Dog) a).seedoor();
// Cat c3=(Cat) a;
// c3.catchMouse();
if(a instanceof Dog)
{
Dog d3=(Dog) a;
d3.seedoor();
}else if(a instanceof Cat){
Cat c4=(Cat) a;
c4.catchMouse();
}
}
子类
public class Animal {
public void shout(){
System.out.println("A big voice");
}
}
class Dog extends Animal{
public void shout(){
System.out.println(" wang wang");
}
public void seedoor(){System.out.println("See Door ");}
}
class Cat extends Animal{
public void shout(){
System.out.println("meow meow");
}
public void catchMouse(){
System.out.println(" catch mouse");
}
}
class Mouse extends Animal{
}
3 java 抽象类
1抽象方法
使用abstract修饰的方法,没有方法体,只有声明。定义的是-种"规范”,就是告诉子类必须要给抽象方法提供具体的实现。
2抽象类
包含抽象方法的类就是抽象类。通过abstract方法定义规范,然后要求子类必须定义具体实现。通过抽象类,我们就可以做到严格限制子类的设计,使子类之间更加通用。
抽象类
package com.xfqg.abstactClass;
public abstract class Student {
private String name;
abstract public void study();
public String getName(){
return name;
}
public void setName(String name){
this.name=name;
}
public Student(String name){
this.name=name;
}
Student(){}
}
子类
package com.xfqg.abstactClass;
public class Text {
public static void main(String[] agrs) {
Student a = new SxStu();
a.study();
}
}
class SxStu extends Student{
public void study(){
System.out.println("Hard work more");
}
}