欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java中类、对象、封装、继承和多态(详细阐述)

程序员文章站 2023-11-26 23:13:16
1.类与对象:(1)类是一种抽象的数据类型,它是对某一类事务的整体描述或定义,但是并不能代表某一具体的事务。例如:人(人有姓名,年龄,性别等特征);对象是抽象概念的具体事例。例如:赵云就是人(类)的一个具体实例,赵云家的旺财就是狗(类)的一个具体的实例。对象是展现出来的具体实例,而不是抽象的概念。(2)类与对象的创建://这里就是创建了一个Person类public class Person(){//每个类中又包含属性以及方法String name;int age;//方法pub...

1.类与对象:

(1)类是一种抽象的数据类型,它是对某一类事务的整体描述或定义,但是并不能代表某一具体的事务。例如:人(人有姓名,年龄,性别等特征);对象是抽象概念的具体事例。例如:赵云就是人(类)的一个具体实例,赵云家的旺财就是狗(类)的一个具体的实例。对象是展现出来的具体实例,而不是抽象的概念。
(2)类与对象的创建:

//这里就是创建了一个Person类
public class Person(){
	//每个类中又包含属性以及方法
	String name;
	int age;
	//方法
	public void study(){
		System.out.println(this.name+"人在学习");
	}
}

类的实例化

public class Application(){
	public static void main(String[] args){
		Person TW=new Person();//先用new创建对象,这里TW这个对象就是Person类的实例化
		TW.name="小明";//在没有赋值之前姓名默认为null,年龄默认为0
		TW.age=21;
		//输出这个人的姓名以及年龄
		System.out.println(TW.name);
		System.out.println(TW.age);
	}
}

(3)构造器:类中的构造器也称构造方法,是在进行创建对象的时候必须要调用的,进行默认的初始化以及对类中构造器的调用,方法名称必须与类名相同,不能有返回值类型,包括void也不能写

public class Person(){
	String name;
	int age;
	//构造一个无参构造器,并且进行实例化的初始化值
	public Person(){}
	//这里一旦定义了有参构造器,在使用new来创建对象时无参构造器必须存在,否则就会报错
	public Person(String name,int age){
		this.name=name;
		this.age=age;
	}
}
public class Application(){
	public static void main(String[] args){
		Person TW=new Person("小明"21);//传参数
		System.out.println(TW.name);
		System.out.println(TW.age);
	}
}
	

2.封装

通常应禁止直接访问一个对象中数据的实际显示,而应通过操作接口来访问,这个过程就称为封装,封装可以增加数据的安全性

public class person {
	//当属性进行私有以后,外部的就无法对属性进行访问,此时就要在内部获得get和set方法
    private String name;
    private int age;
    private int id;
	/*一下就是获得每个属性的get和set方法,get方法是获取值,set方法则是设置值
	我是在vscode上来写的,快速生成get和set的方法为鼠标右键,然后选择源代码操作,
	然后选择Generate Getters and Setters,选中要生成get和set方法的属性即可自动生成*/
	public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
    //这里可以自己对年龄加一个限制,可以过滤掉不合法的数据
    	if(age>120||age<0){
    		this.age = 2;
    	}else{
    		this.age = age;
    	}
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }
}
public class Application(){
	public static void main(String[] args){
		Person TW=new Person();
		TW.setName("小明");//修改信息用set方法
		System.out.println(TW.getName());//获取信息用get方法
		TW.setAge(999);//这里传入的就是一个不合法的数据,根据判断条件就会输出2
		System.out.println(TW.getAge());
	}
}

3.继承

继承其实在生活中很常见比如儿子继承父母的特征,另外继承在java中只有单继承而没有多继承,继承是类跟类之间的关系。

//父类
public class Person(){
	public String name="TWQ";//如果这里改成private则这个属性就是父类独有的,子类就不可以继承此属性
	public int age=23;
	public void say(){
		System.out.println("世界那么大我想去看看");
 	}
}
//子类
public class student extends Person{
	
}
public class Application(){
	public static void main(String[] args){
		student TW=new student();
		//student中原本没有age和say方法,但由于继承则也会有父类的所有属性以及方法
		System.out.println(TW.name);
		System.out.println(TW.age);
		Tw.say();//这里会输出父类中say方法内部的输出
	}
}

4.多态

即同一方法可以根据发送对象的不同,而采用多种不同的行为方式;一个对象的实际类型是确定的,但可以指向的对象的引用的类型就有很多;另外多态是方法的多态,属性没有多态。

public class Person(){
	public void TWQ(){
		System.out.println("son");
	}
}
public class student extends Person{
	//这个方法用来说明main中第二次调用,第一次调用的时候没有这个
	public void TWQ(){
		System.out.println("eat");
	}
}
public class Application(){
	public static void main(String[] args){
		//下面三个即为多态的过程,即同一个学生类用不同的状态表示
		student t1=new student();
		Person t2=new studnet();//父类的引用指向子类对象
		Object t3=new student();//Object又称为祖宗类
		t2.TWQ();//由于子类继承父类方法,所以t2可以按照父类方法进行输出,同理t1有人同样可以输出,显而易见父类不能继承子类的方法
		//如果在子类student中重写父类中的方法,则在运行方法时,都按照子类的来
		t1.TWQ();//此时这俩输出的结果都是按照子类的方法来的,也就是输出eat
		t2.TWQ();
	}
}

本文地址:https://blog.csdn.net/weixin_44313771/article/details/107086434