封装和多态

1.封装:信息隐藏技术

2.封装技术主要用来存储信息,且类里面只有属性没有方法

3.任何访问类中私有成员变量的类都要通过get和set方法访问

封装:在面向对象程序设计中,封装(Encapsulation)是指,一种将抽象性函式接口

的实作细节部分包装、隐藏起来的方法。

封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。

要访问该类的代码和数据,必须通过严格的接口控制。

封装主要功能:我们修改自己的实现代码,而不用修改那些调用饿哦们代码的程序片段。

适当的封装可以让程序码更容易理解与维护,也加强了程序码的安全性。

 

public class EncapsulationTest{

    private String name;
    private int age;
    private String number;
    private boolean sex;

    //返回值sex
    public boolean isSex(){
        return sex;
}
    //赋值
    public boolean setSex(boolean sex){
        this.sex=sex;

}

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

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

    public String getNumber(){
        return;
}
    public String setNumber(String number){
        this.number=number;
}


}
/**
    在函数中怎么调用set  get方法
    创建一个Test类

*/
public class Test{

    public static void main(String[] atgs){
        EncapsuationTest s1 = new EncapsuationTest();
           s1.setSex("true");
           System.out.println(s1.isSex);
           s1.setName("张三");
           System.out.println(s1.getName);
}


}

多态

*多态的常用实现形式

         *父类作为方法的形参

         *父类作为方法的返回值

         *父类引用指向子类对象

Java的多态分为两种

          *静态多态。也叫编译时多态,通过方法重载实现

          *动态多态,运行时多态,通过对象的多态性实现

多态

      *一个引用类型变量如果声明为父类的类型,但实际指向的是子类对象,但是该对象就不能再访问

子类中独有的属性和方法

//school属于Student类中的属性

Student m = new Student();
m.school="郑大";      //合法

Person p = new Student();
p.school="郑大" ;    //不合法

         *当子类中重写了父类的方法,和父类拥有同名属性、方法时,方法将按照对象的运行时类型调用,属性将

按照对象的声明时类型调用。

             Animal a  =  new Cat();

             a.show();                           //将运行子类重写方法

              System.out.println(a.age);    //输出父类的属性值

多态代码

/*
    Animal为父类
*/

public class Animal {
	public String color;
	public String name;
	
	
	public Animal(){
		
	}
    public Animal(String color){
    	this.color=color;
    }
    public void eat(){
    	System.out.println("喜欢吃");
    }
    public String eat(String number){
    	System.out.println(number);
    	return number;
    }
    public void sleep(){
    	System.out.println("睡觉");
    	
    }
}

       

/**
    Cat为子类

*/

public class Cat extends Animal {
	
	public String eye;
	
	@Override
	public void sleep() {
		// TODO Auto-generated method stub
		super.sleep();
		System.out.println("一次睡五小时");
	}
	public void run(){
		System.out.println("跑的非常快");
		
	}

}
/*
   main 类
*/

public class Demo {
	public static void main(String[] args) {
		//静态多态
		Animal s1 = new Animal();
		s1.eat();
		s1.eat("一次吃20斤肉");
		Animal s2 = new Animal("balck");
		System.out.println(s2.color);
		
		
		//动态多态
		/*
		 * 写代码时,是编译时期。看等号左侧,声明的类型
		 *运行时期,是运行时期,看等号右侧,创建对象的类型、
		 * 
		 * 
		*/
		Animal s3 = new Cat();
		//s3.run();   ----->声明为父类的类型 所以该对象不能访问父类独有的方法和属性
		//s3.eye="亮亮的";  ----->错误同上
		s3.color="白色";   //---->调的是父类的属性
		s3.sleep();// ---->调的是子类中重写的方法
		
		
		
		Animal a = new Cat();
		text(a);
		
		
	}
		public static void text(Animal animal){
				System.out.println("引用数据类型,父类作为方法的形参");
		}
	   
		public Animal text1(){
			Animal b = new Animal();
            //Cat c = new Cat();
			return b;
		}
	
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
FlagStatus(SPIx, SPI_I2S_FLAG_RXNE) == RESET) { timeout++; if (timeout > 1000000) return -1; } data[2] = SPI_I2S_ReceiveData(SPIx); SPI继承、封装多态是面向对象程序设计中的三个重要概念。 继承是指一个类x_CS_SET; return ((data[1] << 8) | data[2]) & 0x03FF; } void LCD_Configuration(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA |可以继承另一个类的特性,包括属性和方法,被继承的类称为父类或基类, RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD | RCC_APB2Periph_AFIO,继承的类称为子类或派生类。子类可以重写父类的方法,也可以添加自己的 ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_7 | GPIO_Pin_6; GPIO_InitStructure.GPIO_Speed =方法和属性,从而实现代码复用和扩展。 封装是指将数据和方法封装到一个类 GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_Init(GPIOA, &GPIO_InitStructure); 中,并且对外部隐藏类的实现细节,只暴露必要的接口给外部使用。这样 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15 | GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_5 | GPIO_Pin_6可以提高代码的安全性和可维护性,同时也方便了代码的使用和调用。 多态是 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11; GPIO_InitStructure指同一种行为或方法在不同的对象上具有不同的表现形式,即同一操作作.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_Init(GPIOB, &GPIO_InitStructure用于不同的对象上面,可以产生不同的执行结果。多态可以提高代码的灵活性和); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_Init(GPIOC, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO可扩展性,也是面向对象编程的重要特性之一。 继承、封装多态是_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 |面向对象编程的基础,它们的实现可以让程序更加高效、简洁、易于维护和扩展。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值