第六周实验总结 

一、知识点总结

1、继承的概述:在多个类中存在相同的属性和行为,把这些相同的部分抽取到一个单独的类中,把这个单独的类叫作父类,也叫基类或者超类,把其他被抽取的类叫作子类,并且父类的所有属性和方法(除private修饰的私有属性和方法外),子类都可以调用。这样的一种行为就叫做继承。(相同的东西在父类,不同的东西在子类)

2、继承的关键字:extends

3、继承的格式:class 子类名  extends  父类名{    }

4、在代码中使用继承提高了代码的复用性和维护性,让类与类直接产生了关系。

5、继承的注意点:

①子类只能继承父类所有的非私有的成员方法和成员变量,private修饰的不能继承。

②子类不能继承父类的构造方法,但可以通过   super   关键字去访问父类的构造方法。(先初始化父类,再执行自己)

③不同包不能继承。

 6、在使用  super  的时候,我们还需要了解关键字 super  和  this  的区别:

         super :到父类中去找方法,没有引用的作用;也可以用于其他方法中;与this调用构造方的重载一样,用于第一行。

         this:是指当前正在初始化的这个对象的引用。

二、实验七继承附加实验

1、实验目的与要求

(1)进一步理解4个成员访问权限修饰符的用途;

(2)掌握Object类的常用API用法;

(3)掌握ArrayList类用法与常用API;

(4)掌握枚举类使用方法;

(5)结合本章知识,理解继承与多态性两个面向对象程序设计特征,并体会其优点;

(6)熟练掌握Java语言中基于类、继承技术构造程序的语法知识(ch1-ch5);

(7)利用已掌握Java语言程序设计知识,学习设计开发含有1个主类、2个以上用户自定义类的应用程序。

2、实验内容和步骤

实验1  补充以下程序中主类内main方法体,以验证四种权限修饰符的用法。

public class TEST1 {

private String t1 = "这是TEST1的私有属性";

public String t2 = "这是TEST1的公有属性";

protected String t3 = "这是TEST1受保护的属性";

String t4 = "这是TEST1的默认属性";

private void test1() {

System.out.println("我是TEST1用private修饰符修饰的方法");

}

public void test2() {

System.out.println("我是TEST1用public修饰符修饰的方法");

}

protected void test3() {

System.out.println("我是TEST1用protected修饰符修饰的方法");

}

void test4() {

System.out.println("我是TEST1无修饰符修饰的方法");

}

}

public class TEST2 extends TEST1{

private String e1 = "这是TEST2的私有属性";

public String e2 = "这是TEST2的公有属性";

protected String e3 = "这是TEST2受保护的属性";

String e4 = "这是TEST2的默认属性";

public void demo1() {

System.out.println("我是TEST2用public修饰符修饰的方法");

}

private void demo2() {

System.out.println("我是TEST2用private修饰符修饰的方法");

}

protected void demo3() {

System.out.println("我是TEST2用protected修饰符修饰的方法");

}

void demo4() {

System.out.println("我是TEST2无修饰符修饰的方法");

}

}

public class Main {

public static void main(String[] args) {

TEST2 test2 = new TEST2();

/*以下设计代码分别调用 demo1 demo2 demo3 demo4 test1 test2 test3 test4方法和t1 t2 t3 t3 e1 e2 e3 e4属性,结合程序运行结果理解继承和权限修饰符的用法与区别*/

}

}

实验代码:

package dei;

public class Main {
        public static void main(String[] args) {
            TEST2 test2 = new TEST2();
           test2.demo1();
            test2.demo3();
            test2.demo4();
            test2.tese2();
            test2.tese3();
            test2.tese4();
            System.out.println(test2.e2);
            System.out.println(test2.e3);
            System.out.println(test2.e4);
            System.out.println(test2.t2);
            System.out.println(test2.t3);
            System.out.println(test2.t4);
            }
}
package dei;

public class TEST1 {
    private String t1 = "这是TEST1的私有属性";
    public String t2 = "这是TEST1的公有属性";
    protected String t3 = "这是TEST1受保护的属性";
    String t4 = "这是TEST1的默认属性";
    private void tese1() {
        System.out.println("我是TEST1用private修饰符修饰的方法");
    }
    public void tese2() {
        System.out.println("我是TEST1用public修饰符修饰的方法");
    }
    protected void tese3() {
        System.out.println("我是TEST1用protected修饰符修饰的方法");
    }
    void tese4() {
        System.out.println("我是TEST1无修饰符修饰的方法");
    }
}
package dei;
    public class TEST2 extends TEST1{
        private String e1 = "这是TEST2的私有属性";
        public String e2 = "这是TEST2的公有属性";
        protected String e3 = "这是TEST2受保护的属性";
        String e4 = "这是TEST2的默认属性";
        public void demo1() {
            System.out.println("我是TEST2用public修饰符修饰的方法");
        }
        private void demo2() {
            System.out.println("我是TEST2用private修饰符修饰的方法");
        }
        protected void demo3() {
            System.out.println("我是TEST2用protected修饰符修饰的方法");
        }
        void demo4() {
            System.out.println("我是TEST2无修饰符修饰的方法");
        }
    }
    

实验结果:

201771010108 -韩腊梅-第七周学习总结

实验2  第五章测试程序反思,继承知识总结。

测试程序1:

Ÿ   编辑、编译、调试运行教材程序5-8、5-9、5-10(教材174页-177页);

Ÿ   结合程序运行结果,理解程序代码,掌握Object类的定义及用法;

测试代码:

/**
 * This program demonstrates the equals method.
 * @version 1.12 2012-01-26
 * @author Cay Horstmann
 */
public class EqualsTest
{
   public static void main(String[] args)
   {
      Employee alice1 = new Employee("Alice Adams", 75000, 1987, 12, 15);
      Employee alice2 = alice1;
      Employee alice3 = new Employee("Alice Adams", 75000, 1987, 12, 15);
      Employee bob = new Employee("Bob Brandson", 50000, 1989, 10, 1);

      System.out.println("alice1 == alice2: " + (alice1 == alice2));

      System.out.println("alice1 == alice3: " + (alice1 == alice3));

      System.out.println("alice1.equals(alice3): " + alice1.equals(alice3));

      System.out.println("alice1.equals(bob): " + alice1.equals(bob));

      System.out.println("bob.toString(): " + bob);

      Manager carl = new Manager("Carl Cracker", 80000, 1987, 12, 15);
      Manager boss = new Manager("Carl Cracker", 80000, 1987, 12, 15);
      boss.setBonus(5000);//在子类中Bouns赋初值为空,主类中用更改器更改为5000
      System.out.println("boss.toString(): " + boss);
      System.out.println("carl.equals(boss): " + carl.equals(boss));
      System.out.println("alice1.hashCode(): " + alice1.hashCode());
      System.out.println("alice3.hashCode(): " + alice3.hashCode());
      System.out.println("bob.hashCode(): " + bob.hashCode());
      System.out.println("carl.hashCode(): " + carl.hashCode());
   }
}
EqualsTest

相关文章: