(构造器详解与构造器重载、继承、方法重写)疯狂Java讲义中的知识点10

构造器详解与构造器重载

构造器详解:

构造器规则:
  1. 构造器用于初始化对象
  2. 构造器如何调用?必须用new来调用构造器,这样就可以返回一个初始化完成的对象
  3. 如果你不为一个类提供构造器,系统就会自动为该类提供无参数的构造器
构造器重载:

一个类中可以定义多个构造器(因此构造器名必然相同),必须要求形参列表不同——这就是构造器重载。
this引用:
this紧跟一个 .
this.name;
this.walk();

this调用:
this紧跟圆括号。
this(参数);

this调用代表调用同一个类中重载的构造器——this调用只能出现在【构造器】的【第一行!】


public class Dog {
	private String name;
	private String color;
	private int age;
	
	
	//下面两个就是构造器重载
	public Dog(String name,String color)
	{
		this.name ="我的名字是:" + name;
		this.color = color;
	}
	
	public Dog(String name,String color,int age)
	{
//		this.name = "我的名字是:" +name;
//		this.color = color;
		//调用重载的构造器,到底调用哪个构造器,取决于传入的参数
//		this(name,color);	//尝试调用(String, String)构造器
//		this(name, 20);		//(报错)尝试调用(String , int)构造器(没有这个构造器)
//		this("456");		//(报错)尝试调用(String)构造器
		this("小黄","黄色");	//尝试调用(String, String)构造器
		this.age = age;
	}
	
	//name的setter和getter方法
	public void setName(String name) {
		this.name = name;
	}

	public String getName() {
		return this.name;
	}

	//color的setter和getter方法

	public void setColor(String color) {
		this.color = color;
	}
	public String getColor() {
		return this.color;
	}
	//age的setter和getter方法

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}
}

public class DogTest {

	public static void main(String[] args) {
		
		Dog d = new Dog("旺财","白色",3);
		System.out.println(d.getName());
		System.out.println(d.getColor());
		System.out.println(d.getAge());
	}
}

继承:

封装、继承、多态——面向对象三大特征。

理解继承

苹果类继承了水果类
老虎继承了动物
东北虎继承了老虎

Java的继承:是一种“类与类”之间的关系。
是一种“由一般到特殊”的关系,子类是一种特殊的父类。
子类——小类;父类——大类。
子类实例,完全可以当成父类实例来使用!

Java的继承,用的是extends单词,(扩展的)
父类(超类,基类,大类):子类(派生类,小类)

继承语法

[ 修饰符 ] class 类名 extends 父类
{
}

说明:
——Java是单继承,只能有一个直接父类
——如果你不显示继承父类,Java默认是继承Object类(JDK系统提供的类)
【一切都是Object】
【继承的好处:代码复用】

子类继承父类,可以得到父类的:

——成员变量。
——方法。

public class Bird
{
   // private String name = "猪";

   String name = "小猪";
        //      fly→(方法名),()括号里为形参
    public void fly()
    {
        System.out.println("猪在天上飞");
    }
}
public class Sparrow extends Bird
{

}
public class SparrowTest
{
    public static void main(String[] args) {
        Sparrow sp = new Sparrow();
        //fly方法是继承自父类的。
        sp.fly();

        System.out.println(sp.name);
        sp.name = "龙";
        System.out.println(sp.name);
    }
}
public class Ostrich extends Bird
{
    //重写fly方法
    @Override
    public void fly()

    {
        System.out.println("鸵鸟只能跑~~~");
    }
}
public class OstrichTest {
    public static void main(String[] args)
    {
        Ostrich os = new Ostrich();
        os.fly();
    }
}
方法重写(Override)

子类发现父类不适合自己时,就要重写父类的方法。
方法重写口诀:2同2小1大
2同:方法名相同、形参列表相同。
2小:返回值类型相同或更小,声明抛出的异常相同或更小。
1大:访问权限相同或更大。

@Override:
作用是报错
要求被修饰的方法必须重写父类方法,否则就报错。


import java.util.Random;

class Base
{
    //Object(是返回值类型),info(是方法名),()(括号里是形参列表)
    public Object info ()
    {
        System.out.println("父类的info");
        return new Random();
        //为什么要return一个Random?
    }
}

public class 方法重写 extends Base
{
    @Override
    //方法名、形参列表要相同;返回值类型相同或更小
    //Object是最大的父类,String 比 Object 更小,所以可以。
    public String info()
    {
        System.out.println("子类的info");
        return "卢金鸿";
    }

    public static void main(String[] args) {
        方法重写 fc = new 方法重写();
        fc.info();
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_L_J_H_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值