java面向对象

目录

面向对象三大特征

封装 

包:

访问权限修饰符:

继承

super

多态


面向对象三大特征

封装 

思想:将事物包装起来

优点:

        1.方便使用

        2.保护内部

        3.降低耦合度

封装体现:

        变量:封装一个值

        数组:封装着一组数据类型相同的值

        对象:封装着许多个属性和方法

        类:封装着属性,方法,构造函数

        java文件:封装着多个类

        方法:封装一段代码

包:

包就是文件夹,用来存储Java文件

关键字:package,

命名规则:全小写

com.公司名称缩写或者项目名称.分类名

. 用来表示下级文件

如图用来创建一个新的包 

导包:当前java文件中使用别的包下的Java文件需要导包

关键字:import

1.如果当前使用类有当前包下的,也有其它包下的,且类名相同,此时不建议导包

2.导包时*表示所有

 

语法:

                import 包名.类名

书写位置:

                类名,包下

如图第一个是导入了test文件下的所有文件,而图二只导入Test文件一个

访问权限修饰符:

作用:限定内容的使用范围

关键字含义具体作用
public公有的当前项目中可用
protected受保护的在当前包下或继承关系中可写
不写默认的在当前包下使用
private私有的当前类中使用

建议:

        1.使用private修饰属性

        2.提供public修饰的get与set方法,用于对属性值的修改与获取

继承

               子类将拥有父类的所有属性和方法,构造函数除外

                语法:

                        访问权限修饰符 class 子类名 extends 父类名{ }

                        

                 如图子类Cat类继承了父类Aime

               优点:

                        1.提高代码开发效率

                        2.方便修改

                        3.降低耦合度

                注意:

                        1.需要判断两个类是否有继承关系

                        2.一个类只能拥有一个直接父类,单继承

                        3.一个类没有写出继承,那么默认继承Object类

                        4.子类可以拥有自己特有的属性与方法

super

                含义:谁调用super所在的方法,super就表示谁的父类

                 作用:

                   1.当父类属性名或方法名,与子类的属性名方法名相同时,可用于区分

                    this.属性名或方法名(实参列表);  this.属性名或方法名(实参列表)子类的属性或方法

                    super.属性名或方法名(实参列表)  父类的属性或方法

                   2.调用父类的属性或方法(this也可调用)

                  3.调用父类构造函数

                        super(实参列表);

                                

 如图,子类调用了父类的构造函数

注意:

        1.必须在子类构造函数第一行

        2.如果子类构造函数没有调用父类构造函数,系统会为其自动添加super()调用父类无参构造

                  如果父类没有无参构造,那么子类构造函数会报错

当继承关系创建时:子类对象中的堆内存中既有父类的属性和方法,也有子类特有的属性和方法

多态

        概念:一个事物拥有多种形态

        事的多态

                重载

                        同一个类中,方法名相同,形参列表不同

                重写

                               继承关系中

                                子类方法与父类方法

                                子类方法的访问权限修饰符不能小于父类的

                                返回值类型相同

                                方法名相同

                                形参列表相同

                                方法不同

物的多态:

                子类对象可以转换为父类对象(自动转换)

                语法:

                        父类名  对象名 = 子类对象;

                注意:

  1,子类对象转换为父类对象后,该父类对象不能调用子类特有的属性或方法

2,子类对象转换为父类对象后,该父类对象调用重写的方法,执行的是子类中的方法

3,子类对象转换为父类对象后,该父类对象调用未重写的父类方法,执行的是子类继承父类的方法

                        

父类对象转换为子类对象(强制类型转换)

                语法:

                        子类名 对象名=(子类名) 父类对象;

                父类对象转子类对象可能会出现类型转换异常

判断该对象是否属性该类:

                语法

                                boolean 变量名=对象名 instanceof 类名;

                                true 表示该对象是该类的对象,可以转换

                                false表示该对象不是该类的对象,不能转换

练习:

宠物医生给宠物治病,

宠物有猫,狗,鱼

宠物医生:小李

宠物:

旺财,黄,公(狗)

富贵,白,公(狗)

布丁,白,雌(猫)

金龙,黄,雌(鱼)

小李给以上宠物治病,病好后,狗作揖,猫叫喵喵喵,鱼跳龙门

医生类:小李

                属性:名称

                方法:给宠物治病

动物类:

                共同属性:姓名,颜色,性别

                        狗类:

                                          旺财,富贵, 

                                    方法: 做揖

                        猫类:

                                          布丁

                                    方法:喵喵   

                        鱼类:

                                                金龙

                                    方法:跃龙门

先构建动物类:

public class Aime {
	private String nameString;	//定义属性
	private String celor;
	private String sex;	
	
	public Aime() {//创建无参构造函数
		
	}
	public Aime(String nameString,String celor,String sex) {//创建有参构造函数
		this.nameString=nameString;	
		this.celor=celor;
		this.sex=sex;
	}
	/**
	 * 
	 * 以下皆为构造set,get构造方法
	 * 
	 */
	public void setName(String nameString) {	
		this.nameString=nameString;				
	}
	public String getName() {
		return nameString;
	}
	
	public void setCelor(String celor) {
		this.celor=celor;
	}
	public String getCeor() {	
		return celor;
	}
	
	public void setSex(String sex) {
		this.sex=sex;
	}
	public String getSex() {
		return sex;
	}   
}

再构造猫类方法

public class Cat extends Aime {//继承动物类

	public Cat() {
		super();//调用父类构造函数
	}
	public Cat(String name,String celor,String sex) {
		
		super( name,celor,sex);
	}
	
	public void call() {
		System.out.println(getName()+"喵喵叫");//运用get方法获得猫猫名字
	}	
}

狗类,鱼类与之类似

之后构造医生类

public class Doucter {
	private String name;//构造医生类
	public Doucter() {
		
	}
	public Doucter(String name) {
		this.name=name;
	}
	
	public void setName(String name) {
		this.name=name;
	}
	public String getName(String name) {
		
		return name;
		
	}
	
	public void zhiLiao(Aime aime) {//构造治疗方法,子类转换为父类为自动转换
		
		System.out.println(name+"治疗"+aime.getName());//
		if(aime instanceof Dog) {//动物类来自那个动物
			Dog dog=(Dog)aime;//将此动物类强制转换为具体的动物类
			dog.maekd();//调用此类中的方法		
		}
		if(aime instanceof Fish) {
			Fish fish=(Fish)aime;
			fish.jaep();
		}
		if(aime instanceof Cat) {
			Cat cat=(Cat)aime;
			cat.call();
		}	
		
	}
	

}

最后环境类运行

public class Zhu {
	public static void main(String[] args) {
		Doucter xiaoL=new Doucter("小李");//创建对象
		Dog wangC=new Dog("旺财","白","公");
		Dog fuG=new Dog("富贵","白","公");
		Cat buD=new Cat("布丁","白","雌");
		Fish kIng=new Fish("金龙","黄","雌");
		
		xiaoL.zhiLiao(wangC);//调用医生类的治疗方法,狗类,鱼类猫类会自动转化为父类动物类
		xiaoL.zhiLiao(fuG);
		xiaoL.zhiLiao(buD);
		xiaoL.zhiLiao(kIng);
				
	}

}

 运行成功

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值