private String name;
//取值调用这个方法
public String getName() {
return name;
}
//赋值调用这个方法
public void setName(String name) {
this.name = name;
}
public class Animal {
private String name;
public String getName() {
return name;
}
//构造函数
public void setName(String name)
{this.name = name;
}
public Animal(){
}
//构造函数
public Animal(String name ){
this.setName(name);
}
//protected这个访问修饰符是在同包同类子类都可以访问的修饰符
protected void show(){System.out.println("我叫"+this.getName());
}
那么继承这个类怎么继承呢? 使用extends关键字来继承写在那么怎么来给父类里面的值赋值呢 那就要用到构造函数 构造函数是在这个类实例化是执行的方法没有返回值 void修饰都不能加 直接访问修饰符加类名括号里面可以有参也可以无参看上面代码就知道 那么在子类中怎样写呢?
public class Dog extends Animal {
public Dog(String name){
super(name);
}
public void show(){
super.show();
}
其中super关键字代表父类对象的引用super.show()代表调用父类里面的show方法super()代表调用父类的构造函数这样就把值给了父类里面的属性 然后我i们在创建测试类
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
Dog l=new Dog("楠楠");
l.show();
}
我叫楠楠
1.使用abstract修饰
2.不能被实例化
3.可以包含抽象方法和普通方法
4.不能是密封()或者静态(static)的
抽象方法的特点
1.使用 abstract进行修饰.
2.没有方法体
3.必须位于抽象类当中
4.必须被子类强制重写,除非子类是抽象类
public abstract class Animal {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Animal(){
}
public Animal(String name) {
super();
this.name = name;
}
protected abstract void show();
}
public class Dog extends Animal {
public Dog(String name){
super(name);
}
public void show(){
System.out.println("我叫"+super.getName());
}
public class Polymorphic {
public void sj(Animal l){
l.show();
}
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
Dog l=new Dog("楠楠");
Polymorphic k=new Polymorphic();
k.sj(l);
}
public class Polymorphic {
public Animal sj(Animal x,String name){
//instanceof关键的字的作用是用来判断传入的参数类型
if (x instanceof Dog) {
return new Dog(name);
}
return x;
}
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
Dog l=new Dog();
Polymorphic k=new Polymorphic();
Animal p= k.sj(l,"楠楠");
p.show();
}
}