0
点赞
收藏
分享

微信扫一扫

Java基础——面向对象的三大特征

奋斗De奶爸 2022-04-14 阅读 51
java

面向对象的三大特征

封装

优点:
	1、保护内部
	2、方便使用
	3、降低耦合度

什么是封装?
	即包装

代码中有哪些地方体现了封装?
	变量封装了这一个数据
	方法封装了这一段代码
	类封装了这多个属性与方法
	文件封装了这多个类
	包装封装了这多个文件
	......
	
访问权限修饰符:
	public			公共的			整个项目中
	protected		受保护的		同一个包中或继承关系中
	不写			   默认的		   同一个包中
	private			私有的			当前类中使用

本质:一个存放Java文件的文件夹
如何创建一个包?
	选择项目中的src文件夹,点击鼠标右键,选择new,选择package
包名:
	要求:全部小写,不要使用数字开头,不要使用中文和特殊符号
	潜规则:com.公司名称缩写或项目名称缩写.作用
		注意:表示下层文件夹
package:包,该类所属的包
import:导包,当前类中使用的其他类所在的包,如果是同一个包中的文件夹,无需导包。

继承

由来:
	Java的最终类:Object,一个类没有明确的继承关系,默认继承与Object
优点:
	当子类继承父类时,将拥有父类所有的属性与方法,构造函数除外
语法:
	class 子类名 extends 父类名{
		子类属性
		子类方法
	}
注意:
	一个类的直接父类只能有一个
	子类无法直接调用父类私有的属性与方法
	子类与父类不在同一个包中时,无法直接使用父类默认的修饰符修饰的属性与方法
	子类继承父类时,必须有继承关系

super
	表示:父类对象
	作用:
		1、当子类属性名或方法名与父类的属性名或方法名一致时,可以用于区分子类属性还是父类属性,子类方法或父类方法
		2、调用父类属性或父类方法
		3、当局部变量与父类属性名相同时,区分是局部变量还是父类属性
		4、在构造函数中调用父类的构造函数
			注意:
				1、在构造函数中使用super调用父类构造函数,必须在第一行
				2、如果一个构造函数中同时想使用this或super调用构造函数,请选择
				3、如果子类的构造函数中没有调用父类的构造函数,系统默认帮你添加super();

父类;(基类,根类)
子类:派生类

重写

要求:
	1、必须有继承关系
	2、访问权限修饰符不可变小
	3、返回值类型相同
	4、方法名相同
	5、形参列表相同
	6、方法体相同
注解:@Ovverride

多态

意义:一个事物的多种形态
优点:
	提高代码复用性
	使代码更加灵活
转型:
	向上转型
		子类对象转父类对象
		没有风险
		自动转型
	向下转型
		父类转子类
		有风险
		强制转换
instanceof
	作用:判断该对象是否属于该类
	语法:
		boolean b  = 对象名 instanceof 类名
		如果b为true表示该对象属于该类,反之不属于

在继承关系中对象的创建过程(了解)

1、在堆内存中开辟一片内存空间
2、父类属性赋初值
3、调用父类构造函数
4、子类属性赋初值
5、调用子类构造函数
6、将内存地址赋值给变量
练习:
1,声明变量记录数据10
	int i = 10;
2,键盘录入一个变量,计算录入变量与1中变量的和
	Scanner scanner = new Scanner(System.in);
	System.out.println("请输出一个数");
	int b = scanner.nextInt();
	int n = i + b;
3,判断2中和值是否大于17,如果大于17输出成年,否则未成年
	if(n > 17){
		System.out.println("成年");
	}else{
		System.out.println("未成年");
	}
4,将以上代码重复执行30for(int j = 30; j > 0; j--){
		int i = 10;
		Scanner scanner = new Scanner(System.in);
		System.out.println("请输出一个数");
		int b = scanner.nextInt();
		int n = i + b;
		if(n > 17){
			System.out.println("成年");
		}else{
			System.out.println("未成年");
		}
	}
5,封装一个方法,用于计算两数之差,并调用
	public static void add(){
		int a = 10;
		int b = 15;
		System.out.println(a-b);
	}
	add();
	
	public static void add(int a,int b){
		System.out.println(a-b);
	}
	add(12,1);
	
	public static int add(int a,int b){
		return a-b;
	}
	int num = add(12,1);
6,存储一个可以存放1,2,3,4,5,6,7,8,9的数据,并遍历输出
	int[] nums = {1,2,3,4,5,6,7,8,9};
	for(int n : nums){
		System.out.println(n);
	}
	for(int i = 0; i < nums.length; i++){
		System.out.println(nums[i]);
	}
7,创建张三这个对象,张三年龄25,性别男,会吃饭
class Person{
	String name;
	int age;
	String sex;
	public void eat(){
		System.out.println(this.name+"吃饭");
	}
}
pubic static void main(String[] args){
	Person p = new Person();
	p.name = "张三";
	p.age = 25;
	p.sex = "男";
	p.eat();
}
8,将张三的属性进行封装,使其外部不能直接调用,需要通过方法进行调用
9,创建旺财这个对象,年龄2,性别公,会叫,叫声汪汪汪
10,抽取张三与旺财的共同点形成父类,并用继承改写8,9
    public class Demo{
		public static void main(String[] args) {
            Person person = new Person();
            person.setName("张三");
            person.setSex("男");
            person.setAge(18);
            person.eat();
            Dog dog = new Dog("旺财","公",3,"黄");
            dog.call();
		}
	}
    public class Dog extends animal {
        public Dog(String name, String sex, int age,String color) {
            super(name,sex,age,color);
        }
        public void call() {
            System.out.println(getName()+"会叫:汪汪汪,性别为:"+getSex()+",年龄为:"+getAge()+",毛发为:"+getColor()+"色");
        }
    }
    public class animal {
        private String name;
        private String sex;
        private int age;
        private String color;

        public animal() {
            super();
        }

        public animal(String name, String sex, int age, String color) {
            super();
            this.name = name;
            this.sex = sex;
            this.age = age;
            this.color = color;
        }

        public String getName() {
            return name;
        }

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

        public String getSex() {
            return sex;
        }

        public void setSex(String sex) {
            this.sex = sex;
        }

        public int getAge() {
            return age;
        }

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

        public String getColor() {
            return color;
        }

        public void setColor(String color) {
            this.color = color;
        }	
    }

在这里插入图片描述

举报

相关推荐

0 条评论