【Java基础5】面向对象(下)日期类 抽象类与抽象方法

本文深入探讨Java中的面向对象特性,包括日期类的使用、抽象类和接口的应用。通过编程题举例,阐述了抽象类shape、triangle、circle的设计,以及模拟中南民族大学计算机科学学院的学生会体制,展示了接口与抽象类的结合使用。同时讲解了Date类的关键方法和SimpleDateFormat的日期格式转换实践。
摘要由CSDN通过智能技术生成

面向对象(下)日期类

概念题

1.面向对象的三大特性是什么?请分别梳理它们的知识点。

  封装、继承、多态
  封装:
  	1、提高程序的安全性、保护数据
  	2、隐藏代码的实现细节
  	3、统一接口
  	4、系统的可维护性增加了
  
      get 获得这个数据	set 给这个数据设置值	————————快捷键:alt + insert  
  继承:
  	
  	public class A extends B
  	
  	重写:需要有继承关系,子类重写父类的方法!
  		重写只和非静态方法有关!
  		方法的调用只和定义的类型有关!
  		
  		子类的方法和父类必须要一致;方法体不同。
     		 1、方法名必须相同
      	2、参数列表必须相同
      	3、修饰符:范围可以扩大,但是不能缩小
          public > protected > default > private
      	4、抛出的异常:范围可以被缩小,但不能扩大:ClassNotFoundException(小) -->Exception(大)
  
  	为什么需要重写?
       1、父类的功能子类不一定需要,或者不一定满足!
      Alt + Insert : override
  
  多态:即统一方法可以根据发送对象的不同而采用多种不同的行为方式。(多态是方法的多态,没有属性)
  多态注意事项:
  1、多态是方法的多态,属性没有多态
  	2、父类和子类,有联系     ——>类型转换异常!  ClassCastException!
  	3、存在条件: 继承关系,方法需重写,父类引用指向子类对象!father f1 = new Son();
  
  1. 回顾并梳理this,super,static.final,abstract,interface关键字和instanceof运算符
   super注意点:
       1、super调用父类的构造方法,必须放在构造方法的第一个
       2、super必须只能出现在子类的方法或构造方法中
       3、super和this不能同时调用构造方法
   
   VS  this:
       代表的对象不同:
           this:本身调用的这个对象
           super:代表父类对象的应用
       前提:
           this:没有继承也可以使用
           super:只有在继承条件下才可以使用
       构造方法:
           this():本类的构造
           super():父类的构造
   
   abstract 抽象类:本质上还是是类 extends: 单继承
   		 抽象方法,只有方法名字,没有方法的实现!
   		 抽象类的所有方法,继承了它的子类,都必须要实现他的方法---除非子类也是抽象的,那就让子子类去重写
   		 1、不能new抽象类,只能靠子类去实现它
      		 2、抽象类中可以写普通方法
      		 3、抽象方法必须在抽象类中
   interface 定义的关键字 , 接口都需要有实现类
   		  1、接口中的所有定义的方法都是抽象的 public abstract
   		  2、一个类可以实现接口 implements  接口
   		  3、实现了接口的类,就需要重写接口中的方法
   		  4、利用接口实现多继承
   static    方法,属于类,它不属于实例
   final      常量;如果一个类被final定义了,那么这个类就无法作为父类被继承!!
   private    方法,属性私有		  
  1. 内部类有哪几种形式,它们的访问顺序是怎样的?
   1. 成员内部类
   private int id = 40;
       public void out(){
           System.out.println("这是外部类的方法");
       }
   
       public class Inner{
           public void in(){
               System.out.println("这是内部类的方法");
           }
   
           //获得外部类的私有属性
           public void getID(){
               System.out.println(id);
           }
   ----------------------------------------------------------
           Outer outer = new Outer();
   
           //通过这个外部类实例化内部类
           Outer.Inner inner = outer.new Inner();
           inner.getID();
   
   2. 静态内部类
   public static class Inner{
           public void in(){
               System.out.println("这是内部类的方法");
           }
           
   3. 局部内部类
       public void method(){
           class Inner{
               public void in(){
   
               }
           }
       }
   4. 匿名内部类
   //没有名字初始化类,不用将实例保存到变量中
           new Apple().eat();
       }
   }
   
   class  Apple{
       public void eat(){
           System.out.println("1");
       }
   }
  1. Java为什么要引入基本数据类型的包装类?你如何理解自动装箱(Autoboxing)和自动拆箱(AutoUnboxing)功能?

java是面向对象的语言,而八大基本类型不是类,而是关键字,因此要针对性地对它们做出基本数据类型的包装类。基本类型能做的事情,包装类也能做。 但包装类能做的,基本类型不一定能做,比如要赋一个 null 值

自动装箱(Autoboxing)和自动拆箱 (AutoUnboxing):

自动装箱可以把一个基本类型变量直接赋给对应的包装类变量;

自动拆箱则直接把包装类对象直接赋给一个对应的基本类型变量。

		//直接把一个基本类型变量赋给Integer变量
        Integer  x = 5;
        //直接把一个boolean变量赋给一个Object对象
        Object y = true;
        //直接把一个Integer对象赋给int 类型变量
        int  z = x;

自动装箱 ----- 基本类型的值 → 包装类的实例

自动拆箱 ----- 基本类型的值 ← 包装类的实例

编程题

  1. 抽象类与抽象方法

    定义一个(形状抽象类) shape 抽象类,包含一个颜色属性String color、计算周长calPerimeter()的方法和返回形状getType()的方法

定义一个三角形类Triangle,并重写Shape类的计算周长calPerimeter()的方法和返回形状getType()的方法

定义一个圆形类Circle,并重写Shape类的计算周长calPerimeter()的方法和返回形状getType()的方法

定义一个Main类,并测试

Shape s1 = new Triangle("黑色", 3, 4, 5);
Shape s2 = new Circle("黄色", 3);
System.out.println(s1.getType());
System.out.
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值