<一> 类的性质与用法
类分为三类:普通类、抽象类、接口。类一般包含两个部分:属性和方法(函数)。
普通类 例如:
public class Teacher { //类都有一个父类Object
//属性
private int age;
private String sex;
private int height;
//构造函数
public Teacher(int a, int h,String s) { //构造函数的返回值类型是对象的在内存中的地址
this.age=a; //新建一个构造函数后,默认的构造函数被覆盖(不存在了,被java垃圾处理机制自动清除了)
this.height=h;
this.sex=s;
}
//普通函数
public void play(){
System.out.println("正在玩.......");
}
}
抽象类 例如
public abstract class People //抽象类的方法中至少有一个是抽象函数
{
public abstract void play(){}
}
接口类 例如
interface Tools //接口类的方法全部是抽象函数,且没有方法体,没有构造函数
{
public abstract void cut();
public abstract void drive();
}
类的函数有两种:
构造函数: public 类名(参数类型 参数....)
{
...
}
//构造函数是类创建对象和输入参数的接口,可以对属性进行初始化
//普通类、抽象类有默认的构造函数,接口类没有
//工作机制如下:
public static void main(String []args) {
Teacher t=new Teacher(); (1)
或者
Teacher t; (2)
t=new Teacher(); (3)
// (1)与(2)等价。
// (2)-> 在栈空间里占一个空间,命名为:t
// new Teacher():在堆空间里占一个空间,内容为Teacher类中的属性和函数
// (3)将刚刚占据的堆空间地址给栈空间,t记载的就是该对象在堆空间的地址
}
//
普通函数: public 返回值类型 函数名(参数类型 参数....)
{
...
}
在同一个类中,有一些特例:
如:函数的重载。重载就是一个类中有若干函数名相同的函数:
同:权限说明符、返回值类型、、函数名
异:参数类型、参数的个数、顺序 (方法体没有要求)
在不同的类之间,它们的关系有:泛化关系(继承)、依赖关系、关联关系、实现关系(接口与实现类)。
》 泛化关系发生在子类与父类之间。子类在继承了父类后,会拥有父类的属性和方法(除了父类的构造函数不继承)。
子类可以有另外的属性和方法。
例如:
public static void main(String []args) {
Teacher t1=new Teacher(32,175,“男”);
Teacher t2=new Teacher(28,165,“女”);
t1.eat();
t2.eat();
}
public abstract class People
{
public void eat() {
System.out.prinln("吃饭");
}
public abstract void play(){}
}
public class Teacher extends People{
private int age;
private String sex;
private int height;
public Teacher(int a, int h,String s) {
this.age=a;
this.height=h;
this.sex=s;
}
public void eat() {
super.eat();
System.out.prinln("面包,牛奶,油条.....");
}
public void play(){
System.out.println("正在玩.......");
}
}
此外, 存在继承关系的类之间,可能存在方法的重写。 重写就是子类在继承父类后,会重写方法体。
其它什么都不改变。如上面的Teacher类中的eat()方法重写了People类中的eat()
》 实现关系发生在接口与实现类之间。接口相当于公司的领导,只负责发布命令;实现类相当于
员工,负责完成领导的交代的任务。接口约束实现类的行为。
public static void main (String [] args) {
Knife k=new Knife();
Car c=new Car();
k.cut();
c.drive();
}
interface Tools
{
public abstract void cut();
public abstract void drive();
}
class knife implement Tools{
public void cut(){
System.out.println("刀具可以切东西");
}
public void drive(){
}
}
class Car implements Tools {
public void cut(){
}
public void drive(){
System.out.println("汽车可以代步");
}
}
》多态:多个同一个类型的对象,执行同一个方法,过程不一样就是多态性。
诱发机制:方法的重写、函数的重载、对象类型的强制转换
java类的属性在堆中吗 java类的属性和方法
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章