面向对象基础

面向对象

一种编程思想:

类:是对有具有共同特征和行为的综合。对象是类的具体实现

类的定义:

public class 类名{
	//类名首字母大写 ,大驼峰命名
    //类中包含属性和方法
    属性:成员变量,实例变量
    public String name;
    方法:成员方法,实例方法
    public void methodName(){
        
    }
}
//对象
类名  对象名 = new 类名();

//创建对象需要调用类的构造方法
构造方法:类名()
    特点:方法名和类名相同,没有返回值类型
    public Person(){
    	private String name;
    	public void setName(String name){
    		this.name = name;
    	}
    }
    public static void main(){
		Person p = new Person();
		p.setName("abac");
	}
    构造方法的重载
    public 类名(String name,int age){
    
    }
    重载overload的特征:在同一个类中同一个方法名,参数列表不同(个数,顺序,类型)
 
 this:关键字,对本类对象的引用,可以调用本类的属性和方法
 this(); 对本类对象构造的调用,如果有参则调用有参构造
 	而且this()必须放在构造方法中的第一行
 封装	:隐藏内部的实现细节,对外提供公共的接口
 
    
    

继承

继承:extends 拓展和延伸
	子类对父类的拓展和延伸
	public Person(){
		String name;
	}
	public China extends Person(){
		//China 继承 Person
		//其实Person也有继承 ,默认继承Object
	}
	特点:
		java中的类只有单继承,接口具有多继承
		继承具有单根性,一个类只能有一个父类
		不能继承父类的有三种情况
			· 用private修饰的属性和方法
			· 构造方法
			· 用protected修饰的属性和方法,父类和子类不在同一包下不能继承
		子类又称派生类,父类又称基类和超类
		
		
	 
 super:关键字,对父类对象的引用,可以调用本类的属性和方法
 super(); 对父类对象构造的调用,如果有参则调用有参构造
 	而且this()必须放在构造方法中的第一行
			
 static : 
	修饰方法
	修饰属性
	修饰代码块
 final: 
	修饰属性
	修饰方法
	修饰类


接口

接口:interface

​ 生活中的接口,一种强制规范。

​ 程序中的接口,定义

public interface MyInterface(){
	//将class改成interface 
    //接口是不是类,java--class  interface--class
    //接口中包含属性方法
    java7  接口中只能有 抽象方法,静态常量
   1, 抽象方法的定义
    //抽象方法
    public abstract void abstractMethod01();
    //也是抽象方法
    public void abstractMethod02();
    //也是抽象方法
    abstract void abstractMethod3();
    //也是抽象方法
    void abstractMethod4();
   	//抽象方法,只能public修饰的,如果省略不写,也是public修饰
    		  只能是abstract修饰的方法,,如果省略,也是抽象方法
    2,静态常量 ,接口中只能是public static final 修饰的属性,如果省略会自动补全
    public static final String name;
                
    
        
    java8  接口中允许有 默认方法,静态方法
        默认方法:目的是对接口的一种升级
        public default void defaultMethod(){
            //会有方法体 
        }
   		静态方法:
        public static void staticMethod(){
            //方法体
        }
    	通过接口名.静态方法() 
            MyInterface01.staticMethod();
    java9  接口中允许有私有方法
        private void privateMethod(){
        
    	}
        
}

接口的使用:

public interface MyInterface{

}
接口的特点:
	1,接口不能实例化,没有构造函数
	2,接口中只能有 public static fianl静态常量,
				  public abstract 抽象方法
	3,接口是多继承,如果是多继承则多个类之间用逗号隔开
	publi interface MyInterface01 extends MyInterface,MyInterface02{
	
	}
	4,接口中的抽象方法必须被子类重写覆盖(实现),或者继续抽象(作为接口)
	5,接口的使用都会用到多态
		父类的引用指向子类的对象
		或者
		实现类 对象名 = new 实现类();
	6,如果一个类即有继承又有实现,继承在前实现在后

防盗门

​ 门 开,关

锁  上锁,开锁

​ 防盗门是一个门

​ 所以将门作为父类,防盗门去继承

​ 防盗门具有锁的功能,所以将锁作为接口,防盗门去实现

接口–接口 继承关系(可以多继承)

接口–类 实现关系(继承) 实现(implements)类 其实也是 继承接口

类–类 继承关系(单继承)

命名规范:

​ 接口: IPsersonService

​ 实现类:PsersnServiceImpl

多态

多种形态

​ 张三 学生 人

​ 同一个类型对象,调用同一个方法,产生不同的结果

形成多态必要条件

  • 要有继承
  • 要有方法的重写
  • 要有 父类的引用指向子类的对象 (向上转型)
Animal a1 = new Dog();
Animal a2 = new Cat();
//Animal a1    编译时类型
//new Dog()  运行时类型
a1.eat();
a2.eat();

Dog dog = (Dog)a1;//向下转型 需要强制转换
dog.palyBall();

instanceof 关键字
判断对象是否是某个类的实例对象
a1 instanceof Animal   true
a1 instanceof Dog     	true
a1 instanceof Cat		false
a1 instanceof Object   true
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值