构造器、方法重载、继承、方法重写、自动转型、多态课堂笔记

微笑构造器(构造方法):

定义格式:public 类名(){}

方法的定义格式:public  返回类型 方法名(参数){}

作用:1、用来构造对象

            2、用来初始化属性

例:public teacher(){}

构造方法的调用:

//创建对象,调用构造方法

Teacher tea = new Teacher("李四");
Teacher tea1 = new Teacher();
tea.name = "张三";
tea1.name = "李四";
tea = tea1;        //tea1将地址赋给了tea,tea和tea1指向同一个地址单元
tea1.name = "王五";
System.out.println(tea.name);
System.out.println(tea1.name);

结果为:王五

                王五


微笑方法重载 :

定义:同一个类中,多个方法的方法名相同参数不同(类型、个数、顺序)的方法互为重载方法

作用:给同一个行为提供不同的执行过程

例:

1、public void student(){}
2、public void student(string name){}
3、public void student(int age){}
4、public void student(string name,int age){}
5、public void student(int age,string name){}

构造方法也可以重载

</pre></p><pre name="code" class="java">
1、public Teacher(){
	System.out.println("执行了老师类的构造方法");
	}
2、public Teacher(String n){
        name = n;
        System.out.println(name);
	}

调用时

public class Test {
	public static void main(String[] args) {
        Teacher tea = new Teacher();
        1、tea.Teacher();    //第一种方式输出   <span style="font-family: Arial, Helvetica, sans-serif;">执行了老师类的构造方法</span>

        2、tea.Teacher("张三");  <span style="font-family: Arial, Helvetica, sans-serif;">//第二种方式输出    张三</span>

}

微笑类继承 :

定义:子类继承父类的所有的非私有属性和方法
格式 : public class 子类名  extends  父类名{}


当子类具有父类中的某些相同的属性时,为避免繁琐,用继承来实现

//定义一个父类:
public class Student{
  public int age;
  public String name;
  public void study(){}
 }
//子类大学生UnStudent也有父类中同样的属性,此时继承父类Student
public class UnStudent <strong>extends</strong> Student{}
UnStudent us = new UnStudent();  us.study();            //此时用us调用Student类中的方法时就会出现一样的结果

微笑方法重写:

定义:子类继承父类的前提,然后子类定义一个和父类相同的(方法名、参数、返回类型)方法

当父类中的某些方法在子类中不适用时,我们需要对方法进行重写来替代原来的方法。

例:

父类:

Public class Student{
Public void study(){
   System.out.println("学生学习");
}
}

子类:

Public class UnStudent extends Student{
Public void study(){
   System.out.println(“大学生学习”);
}
}

此时在主函数中调用study方法:

public static void main(String[] args) {
Student stu = new Student();
Stu.study();
}

输出的结果为:“大学生学习”。

如果不进行方法重写,子类直接从父类继承方法study,则输出结果为:“学生学习”。

 

*区别于方法重载

构造函数是不能被继承,所以也不存在构造函数重写,但是构造方法能够进行方法重载

 

微笑 自动转型:

一、定义:创建子类的对象,然后自动转型为父类的类型

格式:父类类名  对象名  = new  子类类名();

例:

Teacher tea = new UnTeacher();        此时tea就是Teacher类型

二、!注意:

*如果有自动转型,转型后的对象类型为转型后的类型:

1、如果子类重写了父类的方法则执行的是重写后的;

2、如果没有重写,则执行的是父类自己的

*如果没有自动转型过程:

1、则执行的方法都是自己的方法

例:

区分:

UnStudent us = new UnStudent();//没有自动转型
Student us1 = new UnStudent();//自动转型且重写了方法
Student us2 = new Student();//没有自动转型

主函数中调用

us.study();
us1.study();
us2.study();

Student、UnStudent类中代码同上

输出结果为:

大学生学习

大学生学习

学生学习

 

三、如果在UnStudent类中写一个自己的方法

例如

public class UnStudent extends Student{
public void study(){
System.out.println("大学生的学习方法");
}
public void playGame(){
System.out.println("大学生玩dota");//不是从父类中继承过来的
}
}

此时再调用

us.playGame();
us1.playGame();
us2.playGame();

第二种和第三种情况会报错,因为此时的父类对象没有访问权限,不能调用子类中的方法


微笑多态:

Java三大特性 (面向对象的核心):封装性   继承性   多态性

体现:多个同一种类型的对象,执行同一个方法,执行的过程不一样(有区别)

 

为什么会有多态现象?

1、自动转型+方法重写     

2、自动转型+方法重写的前提--继承



微笑方法分类(构造方法、普通方法、抽象方法)和类的分类(普通类、抽象类、接口)

一、 

构造方法:public 类名(){}

普通方法:public 返回类型  方法名(参数){}

抽象方法:public abstract 返回类型 方法名(参数);  //没有过程的方法

 

二、

普通类(相当于编码人员):public class 类名{}

 1.只能有普通方法和构造方法,一定不能有抽象方法

//如果一个普通类继承一个有抽象函数的抽象类或者接口,应该要重写父类所有的抽象方法

 2.可以创建对象

 3.属性可以是常量(static final),也可以是变量

//定义常量的方法:

public static final String name = “ququ” //常量一定有一个值

抽象类(相当于小组长,起到一个过渡作用):public abstract class 类名{}

 1.三种类型的方法都可以存在

 2.不能创建对象

 3.属性可以是常量(static final),也可以是变量

接口(相当于项目经理,只指导不做事):public interface 类名(){}

 1.只能有抽象方法,普通方法和构造方法不存在

 2.不能创建对象

 3.属性一定是常量(static final


三、三种不同类的相互继承

普通类可以继承抽象类和接口

抽象类可以继承接口

反过来则不一定



微笑接口继承:
接口和抽象类的作用是用来当父类被继承的,抽象方法是用来指导子类重写(实现)的
关键字:implements 
格式:public class 子类类名  implements 接口名{
//重写父类的所有的抽象方法
}

接口无非就是领导,只是指导开发





附:规范画板

package com.huaxin.lesson0305.project;

import java.awt.event.MouseListener;

import javax.swing.JFrame;

/**
 * 画板项目实战
 * 
 * this代表当前类的对象
 * 方法:this一定是在方法里面才能用
 * 	   看this在哪个方法中使用的,然后寻找调用当前方法的对象,那this==调用当前方法的对象
 * @author fgg
 *
 */
public class DrawBoard extends JFrame{
	//局部变量 全局变量
	public static void main(String[] args) {
		DrawBoard db = new DrawBoard();
		db.initFrame();
	}
	/**
	 * 初始化窗体
	 * this == db;
	 */
	public void initFrame(){
		this.setSize(500, 500);
		this.setDefaultCloseOperation(3);
		this.setVisible(true);
		//创建监听器的实现子类对象来代替创建接口对象
		DrawListener dl = new DrawListener();
		//把监听器添加到窗体上
		this.addMouseListener(dl);
		
	}
}

package com.huaxin.lesson0305.project;

import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

public class DrawListener implements MouseListener{
	public void mouseClicked(MouseEvent e) {
		
	}
	public void mousePressed(MouseEvent e) {
		
	}
	public void mouseReleased(MouseEvent e) {
		
	}
	public void mouseEntered(MouseEvent e) {
		
	}
	public void mouseExited(MouseEvent e) {
		
	}
}



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值