zoukankan      html  css  js  c++  java
  • java学习笔记2

    (1)final 关键字

    在 Java 中声明类、属性和方法时,可使用关键字 final 来修饰。

    1、 final 标记的类不能被继承。

    2、 final 标记的方法不能被子类复写。

    3、 final 标记的变量(成员变量或局部变量)即为常量,只能赋值一次

    (2) 接口(interface)

    接口(interface)是 Java 所提供的另一种重要技术,它的结构和抽象类非常相似,也具有数据成员与抽象方法,但它与抽象类又有以下两点不同:

    1、接口里的数据成员必须初始化,且数据成员均为常量。

    2、接口里的方法必须全部声明为 abstract,也就是说,接口不能像抽象类一样保有一般的方法,而必须全部是“抽象方法” 。

    interface 接口名称 // 定义抽象类

    {

    final 数据类型成员名称 = 常量 ; // 数据成员必须赋初值

    abstract 返回值的数据类型方法名称(参数…) ;

    // 抽象方法,注意在抽象方法里,没有定义方法主体。

    }

    接口是 java 实现多继承的一种机制,一个类只能继承一个父类,但如果需要一个类继承多个抽象方法的话,就明显无法实现,所以就出现了接口的概念。一个类只

    可以继承一个父类,但却可以实现多个接口。接口与一般类一样,均可通过扩展的技术来派生出新的接口。原来的接口称为基本接口或父接口,派生出的接口称为派生接口或子接口。通过这种机制,派生接口不仅可以保留父接口的成员,同时也可加入新的成员以满足实际的需要

    下面是接口实现的一个实例,注意观察它和继承的不同

    public interface A {
           inti = 10 ;
           publicabstract void sayi();
    }
    public interface E {
      intx = 40;
     public abstract  void SayE();
    }
    public interface j {
      intj = 40;
     public abstract  void Sayj();
    }
    public class C implements B {
           publicvoid sayi() {
                  System.out.println("i="+ i);
           }
           publicvoid SayE() {
                  System.out.println("x"+ x);
           }
           publicvoid sayj() {
                  System.out.println("j="+j);
           }
    }
    public class Infaced {
           publicstatic void main(String[] args)
           {
            C c = new C();
            c.sayi();
            c.sayj();
            c.SayE();
           }
     
    }


    从此程序中可以发现与类的继承不同的是,一个接口可以同时继承多个接口,也就是同时继承了多个接口的抽象方法与常量。

    (3)多态性

    1  向上转型:

    父类对象通过子类对象去实例化,实际上就是对象的向上转型。向上转型是不需要进行强制类型转换的,但是向上转型会丢失精度。

    2  向下转型:

    与向上转型对应的一个概念就是“向下转型” ,所谓向下转型,也就是说父类的对象可以转换为子类对象,但是需要注意的是,这时则必须要进行强制的类型转换。

    注意:向上转型可以自动完成;向下转型必须进行强制类型转换

    向下转型简单实例

    public class person {
           publicvoid fun1()
             {
              System.out.println("1 personfun1");
             }
           publicvoid fun2()
             {
              System.out.println("2 personfun2");
             }
    }
    public class student extends person{
          
           publicvoid fun1()
             {
              System.out.println("3 studetnfun3");
             }
     
           publicvoid fun4()
             {
              System.out.println("4 personfun1");
             }
    }
    public class testdemo {
           publicstatic void main(String[] args) {
             person p = new student(); 
             student s = (student)p;
             s.fun1();
             s.fun2();
             s.fun4();
           }
    }


    (4)instanceof 关键字的使用

    用 instanceof 判断一个类是否实现了某个接口,也可以用它来判断一个实

    例对象是否属于一个类。

    对象 instanceof 类(或接口)

    它的返回值是布尔型的,或真(true)、或假(false)。

    (5)复写 Object 类中的 equals 方法

    Object 类中有一个 equals 方法,此方法用于比较对象是否相等,而且此方法必须被复写

    首先要明确==equals的区别==比较的是2个对象的地址,而equals比较的是2个对象的内容
    下面给出一个复写equals方法的例子
    public class person1 {
           privateString  name;
           privateint age ;
           public  person1(String  name,int age)
           {
             this.name = name ;
             this.age = age;
           }
          
      public boolean equals(Object o)
        {
              boolean temp = true;
             
              person1 p1 =  this ;
              if(o instanceof person1 )
                {
                     person1 p2 = (person1)o;
                    
                     if( !(p1.name.equals(p2.name) &&p1.age==(p2.age) ) )
                       {
                            temp = false;
                       }
                }
              else
                     temp =false;
             
               return temp;
        }
    }
    public class overequals {
           publicstatic void main(String[] args){
           person1p1 = new person1("张三", 10);
           person1p2 = new person1("张三",10);
             System.out.print(p1.equals(p2) );
           }
     
    }
    


     

  • 相关阅读:
    ZZNU 1995: cots' times
    网站后缀名都有哪些
    webstorm运行到服务器(Apache)
    window系统下node.js环境配置
    window系统安装node.js
    网站创建自定义百度地图
    响应式一级到三级导航
    H5插入视频兼容各大浏览器
    phpStudy环境安装
    jquery on和bind
  • 原文地址:https://www.cnblogs.com/riskyer/p/3341946.html
Copyright © 2011-2022 走看看