您当前的位置: 首页 >  Java

一一哥Sun

暂无认证

  • 2浏览

    0关注

    622博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

14_Java筑基之封装、继承

一一哥Sun 发布时间:2019-10-30 13:39:50 ,浏览量:2

14_封装、继承 一. 方法的参数传递、返回值

Java语言在给被调用方法的参数赋值时,采用 传值(值传递) 的方式:

  • 基本类型数据传递的是该数据的值本身;
  • 引用类型数据传递的也是这个变量的值本身,即对象的地址(引用),而非对象本身.
1. 基本数据类型传递
//类
public class PassValue{
    public void change(int x){
        x = 100;
        System.out.println("方法中x==" + x);
    }
}

//类
public class Test{
    public static void main(String[] args){
        PassValue pv = new PassValue();
        int x = 5; 
        System.out.println("方法调用之前x=="+ x); 
        pv.change(x); System.out.println("方法调用之后x==" + x);
    }
}
2. 引用数据类型传递

数组、类、String(比较特殊特点:和基本类型一样).

public class PassValue2{
    int x ;
    public void change(PassValue2 obj){
        obj.x = 100;
        System.out.println(“方法中obj.x==” + obj.x);
    }
}

public class Test{
   public static void main(String[] args){
        PassValue2 p = new PassValue2();
        p.x = 5; 
        System.out.println(“方法调用之前p.x==” + p.x); 
        p.change(p); 
        System.out.println(“方法调用之后p.x==” + p.x);
    } 
}
3. 上机练习:
编写学生类:
  学号,姓名,年龄,地址;
  显示信息方法.
  
编写学生管理类:
  输入学生信息(学生作为方法返回值);
  修改学生信息(学生作为参数传递).
4. 基本类型和引用类型作为方法的返回值
基本类型返回的实际数据,引用类型返回的是对象的地址.
二. 封装性 Java语言有三大特征:
封装(encapsulation): 对外部不可见,隐藏对象的属性和实现细节.

继承(inheritance): 一个类继承另一个类的成员.

多态(Polymorphism): 每个对象表现的多样性.
1. 封装的概念
什么是封装:
在类中,对于不想被类外直接访问的成员变量,进行私有化,
同时对外提供一个公有的方法访问私有的成员.

封装成员变量两个步骤: 
第一步: 添加private 修饰符;
第二步: 添加get和set方法.
2. private
使用private访问权限实现成员变量的私有化,private修饰的成员变量就是私有成员变量,只能在类内部直接访问,类外不能直接访问.
3. get和set方法
get方法表示访问私有属性的方法: 语法:
 public 属性类型 getXxx(){ return 属性;
}

set方法表示修改私有属性的值的方法:
 public void setXxx(参数类型 参数){ this.xxx = 参数;
} 
示例
package com.syc.day09_4;
/**
* 人类
* 属性:姓名年龄性别
* 方法: eat study *
* 封装:(1)把成员变量变成私有的 (2) 添加get和set方法 * @author wgy
*
*/
public class Person {
    private String name;
    private int age;
    private String sex;
    
    public String getName() {
        return name;
    }
    
    public void setName(String name) {
        this.name=name;
    }
    
    public int getAge() {
        return age;
    }
    
    public void setAge(int age) {
        if(age>100||age. 同一个类中,方法名相同,参数列表不同(个数不同,类型不同,顺序不同); 

2>. 和方法返回值,访问修饰符无关.

2. 方法重写
在继承过程中,子类中从父类继承来的方法无法满足自己的需求时,可以在子类中对父类方法进行完善,这个完善过程叫做方法重写(override),方法的重写相当于在子类中覆盖父类中的方法.
示例
public class Animal { //属性
    String nickname;
    String color;
    String strain;
    
    //默认构造方法 
    public Animal() {
        System.out.println("父类Animal的构造方法执行了..........");
    }
    
    //带参构造方法()
    public Animal(String nickname,String color,String strain){
            this.nickname=nickname;
            this.color=color;
            this.strain=strain;
    }
    
    //打印方法
    protected Object printInfo() {
        System.out.println("本动物 昵称:"+nickname+" 颜色:"+color+" 品种:"+strain);
        return 10;
    }
}

public class Dog extends Animal{
    int love; 
    //默认构造方法 
    public Dog() {
        super();//调用父类的默认构造方法
        System.out.println("Dog子类的构造方法执行了"); 
    }
    
    //带参构造方法
    public Dog(String nickname,String color,String strain,int love) {
        super(nickname, color, strain);//调用父类的带参构造
            this.love=love;
    }
    
    /**
    * 看家 
    */
    public void lookHome() {
        System.out.println(nickname+"正在给主人看家...."); 
    }

    /**
    * 重写: 覆盖
    * 1.方法名相同;
    * 2.方法参数,返回值类型必须相同;
    * 3.访问修饰符不能比父类严格.
    * java特殊 1.7 返回值,可以和父类兼容就可以,
    * 必须是引用类型 
    */
    public String printInfo() { 
        System.out.println("狗狗信息:昵称:"+super.nickname+" 颜色:"+super.color+" 品
    种:"+super.strain+" 亲密度:"+this.love); 
        return "haha";
    }
}
3. 方法重写规则
访问权限 其他修饰符 返回值 方法名(参数列表)
1. 在继承过程中,方法名、参数列表、返回值类型必须和父类相同;
2. 访问修饰符不能比父类严格.
   Java特殊处:
   JDK1.7之后,方法的返回值可以和父类兼容就可以,但是必须是引用类型.
4. 方法的重写和方法的重载的区别
方法的重载: Overload,在同一个类中,方法名相同,参数类别不同,互为重载方法.

方法的重写: Override,在继承过程中,在子类中重写父类中继承来的方法,方法名、参数列 表、返回值必须相同,访问权限不能比父类严格.
5. 有关方法重写之后的调用:
只要在子类中重写了父类的方法,通过子类对象调用该方法一定是子类重写的方法.
八. 总结
1. 方法传参、返回值:
    方法传参采用传值: 
    基本类型传递的数据本身,引用类型传递的是地址;
   
   返回值: 基本类型返回数据本身,引用类型返回地址.

2. 封装: 
   隐藏类的实现细节,保证程序安全.
   2个步骤:
      第一步: 私有化成员变量;
      第二步: 添加get和set方法.
      
3. static关键字:
    静态:
    成员变量或方法属于所有对象共有的,不属于每个对象,使用静态.
    
4. 继承: 
    在原有类的基础上,产生一个新的类,在新的类中可以访问原有类中的非私有成员,并且可以添加一些自己独有的成员,这个过程叫做继承,简单理解一个类继承另外一个类.

    关键字: extends 
    继承符合 is a 关系.
    继承特点: 单继承;继承具有传递性.
    
5. super关键字: 
    表示当前父类对象的引用.
    super.属性
    super.方法
    super(参数); 
    调用父类的构造方法; 
    
    this和super的区别.

6. 包: 
    管理类,解决类的命名冲突问题.
    域名倒置+项目名:
   package com.syc.day09; 必须是第一句.
   
    导包:
   import java.util.*; 

7. 访问权限修饰符:
    public: 公开的;
    protected: 包含的;
    [default]: 默认的;
    private: 私有的.
    
    类可以用 public 或默认的权限修饰符;
    成员变量和方法 四个权限修饰符都可以用.
    
8. 方法重写: 
   重写规则:
   ①. 在继承中,方法名、参数列表、返回值必须和父类的方法相同;
   ②. 访问权限不能比父类更严格.

 

关注
打赏
1665624836
查看更多评论
0.0436s