还是继承,重写、重载及toString
/**
* 这个类作为Dog的父类
* @author
* @date 2018年1月22日上午9:40:45
* java所有的类默认继承Object,
* 一个类的父类包括直接和间接的父类。
* 一个类只能有一个直接父类,一个类不能同时继承多个类,在java只支持单继承,不支持多继承,java中是支持多重继承。
* 子类继承父类,只能使用非private修饰的成员变量以及方法
*/
public class Animal extends Object{
String name;
private int age;
static String sex="雌";
static{
System.out.println("this is static code ,Anmian sex is "+sex);
}
{
System.out.println("this is not static code");
}
public Animal() {
System.out.println("this is Animal ");
}
public void run(){
System.out.println("Animal is running");
}
// 如果父类的方法是用private修饰,则子类不能重写该方法
private void sleep(int mon){
}
public void play(String name,String name1,int num,String games){
}
private void sleep(){
System.out.println(" Animal is sleeping ");
}
public static void eat(){
}
}
/**
* 这个类主要是讲解方法的重载
* 方法的重载就是在同一个类中允许同时存在一个以上的同名方法,只要它们的参数个数或类型不同即可。
* @author 孙勇
* @date 2018年1月22日下午2:55:12
* Cat
* TestDemo1
* 重载只是和参数个数,参数类型,以及参数类型的顺序有关,和参数名名没有关系
* 和权限修饰符无关,和返回值类型无关,和static,abstract无关
* 方法重载后,具体调用哪个方法,是有实参的个数,类型以及类型顺序决定
*/
public class Cat extends Animal{
String name;
int age;
String sex;
String color;
// 在同一个类的构造方法中不能相互使用this来调用构造方法,否则就会报错
// 在同一个构造方法中,不能同时用super和this来调用构造方法
// 在子类构造方法中必有一个构造方法中有sper(),
public Cat() {
super();
}
/**
* 这个是Cat的有一个参数的构造方法
* @param name 猫的名字
*/
public Cat(String name){
this();
this.name=name;
}
/**
* 这个是Cat的有两个参数的构造方法
* @param name 猫的名字
* @param age 猫的年龄
*/
public Cat(String name,int age){
this(name);
this.name=name;
this.age = age;
}
// 参数个数不同
// int eat(){
// return 1;
// }
// 参数类型不同
public void eat(int num){
}
/**
* 这个是猫的吃的方法
* @param name 食物的名字
*/
public void eat(String name){
System.out.println("吃"+name);
}
// 参数类型顺序不同
public void eat(int num,String food){
System.out.println("吃"+num+"个"+food);
}
public void eat(String food,int num){
}
public void eat(String food,int num,String name){
System.out.println(name+"吃"+num+"个"+food);
}
/**
* 这个也是猫的吃的方法
* @param name
* @param food
* @param name1
* @param num
* @return 返回具体信息的描述,谁和谁吃几个什么的形式的字符串
*/
public String eat(String name,String food,String name1,int num){
String str = name+"和"+name1+"吃了"+num+"个"+food;
return str;
}
// 子类重写父类方法时,返回值类型必须和父类方法返回值类型一致
// 如果子类重写父类的方法,那么通过子类对象是不能调用父类的被重写方法,被重写方法已经被覆盖掉了
@Override
public void run(){
System.out.println("Cat is running");
}
// 子类重写父类方法时,参数类型必须和父类方法参数类型一致
// 方法的重写和静态没有关系
// 方法重写时应遵循的原则:
// 重写后的方法不能比被重写的方法有更严格的访问前提条件,即子类中方法权限必须大于等于父类该方法的权限。
// @Override
public void sleep(int mon){
}
// 子类重写父类方法时,参数类型顺序必须和父类方法参数类型顺序保持一致
// 如果子类有一个方法和父类中的方法方法名相同,参数顺序不同,那么既不是重写,也不是重载
public void play(int i,String na,String na1,String games){
// 如果子类要调用父类的被重写的方法可以使用super
super.run();
this.run();
super.eat();
}
public static void main(String[] args) {
Cat c = new Cat();
c.eat("老鼠");
c.eat(2, "老鼠");
c.eat("老鼠", 2, "tom");
}
@Override
public String toString() {
return "Cat [name=" + name + ", age=" + age + ", sex=" + sex + ", color=" + color + "]";
}
}
16万+

被折叠的 条评论
为什么被折叠?



