1、类与对象
(1)类:现实中所有实体共同点的集合、以人的意识而存在的、主观性
对象:现实中一个一个实体、具体的、客观的
(2)类: 类是构造对象的模板或蓝图,就是具有共同属性和行为一类事物的总称。
对象:是事物存在的实体
eg:飞机:特征(机翼,油箱,轮子,发动机。。。)
行为(跑,起飞,承载事物。。。)
面向(关注)对象、面向(关注)过程
一件事情 = 对象(执行者)+过程(流程)
eg:如果A想买一瓶水,如果让B去买水,那么A所需要关注的对象就是B即可,不用考虑B是如何去买的这个过程(怎样出去,去那个店铺等)
如果考虑是过程,那么就是需要考虑如何出门,出门后是否需要乘车,选择的店 铺。。。而不要考虑的是谁去买
面向对象:结果不确定
面向过程:结果确定
2、构造器(构造方法)
基本格式: public 类名(){}
作用:1.用来构造对象,在创建对象的时候调用
2.用来初始化属性
package www.huaxin.com;
public class Student {
public static void main(String[] args)
{
Student stu = new Student();
stu.study();
}
//构造函数(构造器)
System.out.println("Student的构造方法");
}
//方法重载
System.out.println("学生学习");
}
public void sutdy(String name)
{
System.out.println("某某在学习");
}
public void sutdy(String name,int age)
{
System.out.println("多大的某某在学习");
}
}
当创建stu这个对象时,就会先初始化这个对象所以会先执行public Student(){ System.out.println("Student的构造方法");}这个构造函数。
运行的结果为:Student的构造方法 学生学习
3.方法重载
定义:在同一个类中,方法名相同,参数不同(参数个数、参数顺序、参数类型)的多个方法互为重载方法
构造函数重载注意:如果默认无参构造函数被重载掉了,则默认无参构造函数就不存在,如果还需要,则要显性定义出来
4.继承
继承:子类继承父类的所有非私有属性和方法
关键字:extends implements
这个例子中子类是Unstudent,父类是Student(见上)。那么Unstudent类就含有父类中所有非私有的属性和方法(例子中为定义私有属性和方法)所以Unsutudent类就含有sutudys的三个不同的方法以及一个构造函数。
package www.huaxin.com;
public class Unstudent extends Student{
public static void main(String[] args)
{
Unstudent uns = new Unstudent();
uns.study();
}
//方法的重写
public void study()
{
System.out.println("Untudent学生在学习");
}
}
5.方法重写
子类重写父类继承过来的方法
格式:子类重写父类,方法名、参数、返回类型必须一致,访问权限不能缩小
eg:见上,study方法重写后输出的结果不在是学生学习,而是Untudent学生在学习。
6.自动转型
构造的是子类对象、声明的是父类引用,则子类对象类型会自动转型为父类类型
注意:转型后的对象,如果子类重写了父类的方法,则执行的必然还是重写后的
多态:同一个类型的对象,执行同一个方法,但是执行结果不一致
7.普通类、抽象类、接口(继承)
方法分类:
构造方法 public 类名(参数){}
eg: public Student(){
System.out.println("Student的构造方法");
}
普通方法 public 返回类型 方法名(参数){}
eg: public void sutdy(String name)
{
System.out.println("某某在学习");
}
抽象方法 public abstract 返回类型 方法名(参数);
eg: public abstract eat(String name);
类分类格式:
普通类:public class 文件名{}
抽象类:public abstract class 文件名{}
接口:public iterface 文件名{}
特点:
普通类: 1.构造方法、普通方法允许存在,不允许存在抽象方法
2.属性可以是常量、可以是变量
3.可以构造对象
抽象类: 1.三种类型的方法都允许存在
2.属性可以是常量、可以是变量
3.不可以构造对象(因为有抽象方法存在)
接口: 1.只允许存在抽象方法
2.属性只能是常量、访问权限只能是public或者默认
3.不可以构造对象(因为有抽象方法存在)