zoukankan      html  css  js  c++  java
  • 【代码笔记】Java基础:类的继承(构造器)

    • 在Java中,创建对象的格式为:

    类名 对象名 = new 类名();

    如:

    1 JFrame jf = new JFrame();
    •  一个对象被创建出来时,经常要先做一些事这个对象才能正常使用,也可以说是准备工作,比如给这个对象赋些初始值,或者先运行一些别的方法。这时候就需要一个“构造器”用于:
      1. 构造对象
      2. 初始化属性
        这样,把那些在创建时要做的事写在构造方法里,每次创建就会被执行一遍。
    • 我们常见的一种Java格式:
      • public 返回类型 方法名(参数){ }
      • 如:
    1 public void study(){}      
    • 这在Java中称为“方法”。
    • 所谓方法,就是用来解决一类问题的代码的有序组合,是一个功能模块。

     

    • Java中“构造器”,在C语言中一般称之为“构造函数/构造方法”。
    • 其定义格式:
      • public 类名 () { }

     

    • 文件名:Teacher.java
    •  1 public class Teacher {
       2     String name;
       3     
       4     //构造方法,构造对象的时候执行
       5     public Teacher(){
       6         System.out.println("执行了老师类的构造方法");
       7     }
       8     public Teacher(String n){
       9         name = n;
      10     }
      11     
      12     //方法重载
      13     public void teach(int a){
      14         System.out.println("执行教学方法1");
      15     }
      16     public void teach(){
      17         System.out.println("执行教学方法2");
      18     }
      19     public void teach(String n){
      20         System.out.println("执行教学方法3");
      21     }
      22     public void teach(String n,int a){
      23         System.out.println("执行教学方法4");
      24     }
      25     public void teach(int a,String n){
      26         System.out.println("执行教学方法2");
      27     }
      28 }

       

    • 文件名:Test.java
    •  1 import javax.swing.JFrame;
       2 
       3 public class Test {
       4     public static void main(String[] args) {
       5         //创建对象,调用构造方法
       6         Teacher tea = new Teacher("李四");
       7         
       8         
       9         Teacher tea1 = new Teacher();
      10         tea.name = "张三";
      11         tea1.name = "李四";
      12         tea = tea1;
      13         tea1.name = "王五";
      14         
      15         System.out.println(tea.name);
      16         System.out.println(tea1.name);
      17         
      18     }
      19 }

       

    • 虽然是以“public 类名 (){ } ”的形式存在构造器中,不像创建对象有返回值类型(比如“void”),但其将返回一个内存地址。
    • 在内存中,存储数据分为栈和堆。
    • 栈存储变量,堆存储对象,其都有相应的内存地址。在执行构造器时,对数据进行初始化属性,相当于把对象的各项数据(所有的)存储到内存单元中,变量(如“tea”、“张三” )存到栈中,对象(如“name”、“Teach” )存到堆中。
    • 上文“Test.java”的运行结果是输出:tea存入栈,name“张三”存入堆,都有自己的内存地址。
      • 王五
      •  王五
    • 执行 “tea = tea1”时,相当于把tea1的内存地址复制给teatea指向的内容将全部变成tea所指向的内容,所以运行结果是两个“王五”。
    • 在“Test.java”中,作为主函数  调用构造方法 “Tecaher”(文件:Teacher.java),在执行一次“ new Teacher(); ”操作时,调用一次构造函数。
    • 1 Teacher tea = new Teacher("李四");

       

    • 上面可改写为:

      1 Teacher tea;
      2 tea = new Teacher("李四");

      此处构造器“Teacher ”只调用一次,及“执行了老师类的构造方法”只打印一次。

    • 文件名:Student.java
      1 public class Student {
      2     public String name;
      3     public int age;
      4     
      5     public void study(){
      6         System.out.println("学生学习");
      7     }
      8     
      9 }

       

    • 文件名:UnStudent.java
      1 package com.huaxin.lesson0304;
      2 
      3 public class UnStudent extends Student{
      4     
      5 }

       

    • 如上,称为类的继承。
    • 定义:子类继承父类的所有的非私有属性和方法
    • 格式 : public class 子类名  extends  父类名{ }
    • UnStudent.java”大学生继承“Student.java”学生的非私有性属性。
    • 即凡是Student学生所有的公共的,大学生都具备。

     

     

     

     

     

  • 相关阅读:
    onmousewheel
    Zepto 使用中的一些注意点(转)
    oninput onpropertychange 监听输入框值变化
    try catch
    center的用法
    [转]你的编程语言可以这样做吗?(map/reduce的js示范) (转)
    vue中 $event 的用法--获取当前父元素,子元素,兄弟元素
    chrome的vue插件——vue.js devtools的安装
    说明与比较:new Vue() 和 export default {}
    Vue反转字符串及join(),reverse()与 split()函数用法解析
  • 原文地址:https://www.cnblogs.com/xiaofu007/p/5243583.html
Copyright © 2011-2022 走看看