Java学习第三阶段

我还想继续拖。

《封装》

隐藏实例细节,不让外部程序直接访问。

   看了几篇关于封装的博客,封装的作用通俗的来说:    
       1.提高代码的安全性。
       2.提高代码的复用性。
       因为提到程序设计追求的“高内聚,低耦合。”:封装细节,便于修改内部代码,提高可维护性,
       简化外部调用,编译调用者使用,便于扩展和写作。(这段话不是我讲的。)
       通过访问修饰符 private 封装属性,通过set和get方法设定和访问。(具体代码在二阶段)
       类中不需要对所有对外提供的内容都私有化,包括属性和方法。

但是私有仅仅是封装的体现形式而已。

《继承》

指在一个现有类的基础上去构建一个新的类。

    构建出来的叫子类,现有类叫父类,
    “ 子类会拥有父类所有可继承的属性和方法。 ”
  继承需关键字extends :class 子类名  extends  父类名{}  代码如下。
  用处:也体现了代码的复用性,
              让类与类之间有联系,
              提供了多态的前提。
   tips : 1. private 修饰的属性和方法不能继承。
           2.成员变量:如果子类和父类中出现了同名的成员变量,
                      访问父类要用super关键字,子类用this关键字(如果没有关键字默认是子类中的量)
           3.重写:a.当在程序中通过对象调用方法时,会先在子类中查找有没有对应的方法,
                     若子类中存在就会执行子类中的方法,
                     若子类中不存在就会执行父类中相应的方法。(官方说法)
                   b.如果子类中出现与父类一模一样的方法时,会出现覆盖操作,
                     就是override重写、复写、覆盖。
                     【注意:子类覆盖父类方法,必须要保证权限大于父类权限。
                            而且方法的返回值类型,方法名,参数列表都要一模一样。】       
    public  class   dad{
         String name;
         public void work(){
         System.out.println("是爸爸。");      
   }
}
public  class son  extends  dad{
        public void  whatname(){
         System.out.println("name is"+ name);
   
   }
        public static void main(String[] args){
           son  n = new son();
           n.name ="th";
           n.work();
           n.whatname();
     }
}

输出的结果是 :是爸爸 th
每个儿子只有一个亲爸爸,爸爸可以有几个儿子,子类只有一个父类。
好好记记访问修饰符范围
重写重载的区别:

重载:
对象:同一个类的不同方法中
1.参数必须不同,可以是类型,也可以是顺序
不规定返回值类型必须一样
2.可以有不同的权限修饰符
方法名必须一样,才能称方法与方法之间构成重载
3.可以抛出任意大小的异常
重写:
1.前提:重写(覆盖)必须发生在子父类之间,且只能是子类对父类的方法进行重写
2.参数列表必须和父类的一样
3.返回值类型需一致
4.权限修饰符子类需大于或等于父类方法权限修饰
子类抛的异常需不能大于父类抛出异常
————————————————
原文链接:https://blog.csdn.net/qq_34626097/article/details/83053004

Object :Object类是所有类的父类,如果一个类没有使用extends关键字明确标识继承另外一个类,那么这个类默认继承Object类。

    1. toString()方法:Object类里面定义这个方法的时候返回的对象的哈希code码(即对象地址)
                       可以通过重写toString()方法表示出对象的属性。
    2.equals()方法:比较的是对象的引用是否指向同一块内存地址(相同)。
                    当我们创建一个对象的时候,这个对象其实是一块内存地址,通过引用内存地址来修改属性。
                    一般情况下比较两个对象的内存空间是否相同,进行重写。
                    【使用方法:a.equals(b),而且此方法返回值是布尔类型,1或者0】
                        

《多态》

Java作为面向对象的语言,同样可以描述一个事物的多种形态。

 比如:1.学生时人的一种,同学张三既是学生也是人。
       2.student类继承了person类,一个student的对象既是student,又是person。
         即Java中多态的代码体现在一个子类对象(实现类对象)既可以给这个子类(实现类对象)引用变量赋值
         又可以给这子类(实现类对象)的父类(接口)变量赋值。Student类可以为Person类的子类。
         那么一个Student对象既可以赋值给一个Student类型的引用,也可以赋值给一个Person类型的引用。
        【最终多态体现为父类引用变量可以指向子类对象。】
tips:  1.多态的前提是必须有子父类关系或者类实现接口关系,否则无法完成多态。
        2.在使用多态后的父类引用变量调用方法时,会调用子类【重写】后的方法。
抽象类:用abstract关键字修饰,则该类为抽象类 。
               应用:1.某些情况,父类只知道它的子类应该包含怎样的方法,
               但是没法准确知道这些子类如何实现这些方法。(约束子类必须有哪些方法)
                     2.从多个具有相同特征的类中抽象出一个抽象类,以这个抽象类作为子类的模板。
                     (避免了子类设计的随意性。)
        tips: abstract定义抽象类,定义抽象方法(只有声明,不需要实现。)
              【包含了抽象方法的类是抽象类。】
               a.抽象类中可以包含普通方法,也可以没有抽象方法。
               b.抽象类不能直接创建,可以定义引用变量。
                     

1)、普通类多态定义:父类类型 变量名 = new 子类类型();

//父类
	class Fu {}
	//子类
	class Zi extends Fu {}
	//类的多态使用
        Fu f = new Zi();

2)、抽象类多态定义:抽象类 变量名 = new 抽象类子类();

//父类
abstract class Fu {
            public abstract void speak(){
          };
	}
//子类
class Zi extends Fu {
            public void speak(){
	        System.out.println(“我是一号or其他号,继承说话模板”);
            }
 }
//测试
  Fu fu = new zi();
  fu.speak();

装箱与拆箱

   基本类型:boolean,char,btye,short,int,long,float,double
   基本类型包装类:Boolean,Character,Byte,Short,Integer,Long,Float,Double
  1. 装箱是指将基本数据类型封装为对象类型。
  2.拆箱是指将对象类型转换成基本数据类型。
  3.装箱和拆箱都是编译器自行完成的。
  4.装箱的实质是调用Integer.valueof()方法。
Integer num =10 ;//装箱
int i=num; //拆箱
//用int来对Long装箱时不行的,但是可以强制转换后再装箱
int i=10;
//false
Long l=i;
Long l=10//默认整型时int类型
//ture
Long l =long)i;

感谢学长的鞭策让我治好了多年的拖延症。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值