云计算百科
云计算领域专业知识百科平台

Day7_面向对象_封装继承

课前回顾:
  1.可变参数:
    a.格式: 数据类型…变量名
    b.注意:
      参数列表中只能有一个可变参数,而且需要放到最后
    c.本质:数组
  2.递归:方法内部自己调用自己
    a.注意:必须要有出口,而且不要递归太多次
  3.冒泡排序:相邻两个元素进行比较,互换位置
  4.二分查找:每次查找都取中间索引,然后找不到,下次就要干掉一半
    a.前提:数组是升序的
  5.对象数组:存的是对象,取出来的还是对象
  6.基本类型做方法参数传递:传递的是值,不是变量本身
    引用类型做方法参数传递:传递的是地址值

类+对象,成员变量和局部变量

匿名对象

//原始方式new对象 -> 有名对象
Person p1 = new Person();
p1.name = "张三";
System.out.println(p1.name);
p1.eat();
//匿名对象
new Person().eat();
new Person().name = "李四";
System.out.println(new Person().name);

内存

以下是老师课件中画的图:

成员变量和局部变量

public class Person {
//成员变量
String name;

public void eat() {
System.out.println(name);
//局部变量
int i = 10;
System.out.println(i);
}

public void show() {
System.out.println(name);
//System.out.println(i);i是eat方法中定义的,只作用于eat方法
}
}

封装

用private写,通常提供set..和get..对外界提供公共接口.

this的作用:代表的是当前对象(哪个对象调用的this所在的那个方法,this就代表哪个对象),可以区分重名的成员变量和局部变量 ->this.后面的就是成员的

this的使用:

//就是this.name代表String name的值,后边的name代表speak里的值
public class Person {
String name;
public void speak(String name){
System.out.println(this+"……………");
System.out.println(this.name+"您好,我是"+name);
}
}

public class Test01 {
public static void main(String[] args) {
Person person = new Person();
System.out.println(person+"…");
person.name = "哪吒";
person.speak("李靖");

System.out.println("================");
Person person2 = new Person();
System.out.println(person2+"…");
person2.name = "沉香";
person2.speak("刘彦昌");
}
}

构造方法

空参构造

1.格式:
  public 类名(){
      
  }
2.作用:
  new对象,初始化对象的属性
3.特点:
  每个类中都默认有一个无参构造,即使不写,jvm也会默认提供一个

有参构造

1.格式:
  public 类名(形参){
      为属性赋值
  }

2.作用:
  a.new对象
  b.为属性赋值
  
3.注意:
  如果写了有参构造,jvm将不再提供无参构造,所以建议无参的,有参的构造都写出来

标准javabeen

public class Student {
private int sid;
private String name;

public Student() {
}

public Student(int sid, String name) {
this.sid = sid;
this.name = name;
}

public int getSid() {
return sid;
}

public void setSid(int sid) {
this.sid = sid;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}
}

static使用

1.概述:static是静态关键字
2.可以修饰一个方法,修饰一个成员变量
   a.修饰方法: 权限修饰符 static 返回值类型 方法名(形参){
                              方法体
                              return 结果
                     }

   b.修饰一个成员变量:
     权限修饰符 static 数据类型 变量名

3.static关键字的特点:
   a.静态成员属于类成员,不属于对象成员,非静态成员属于对象成员
   b.静态成员会随着类的加载而加载
   c.静态成员优先于对象存在
   d.凡是根据static关键字所在的类创建出来的对象,都可以共享这个静态成员

4.调用:
   类名直接调用

继承

示例代码

格式: 子类 extends 父类

package com.atguigu.e_super;

public class Fu {
public int num = 100;
public Fu(){
super();
System.out.println("父类无参构造方法…");
}
public Fu(int num)
{
super();
System.out.println("父类有参构造方法…");
}
public void show()
{
System.out.println("父类方法…");
}
}

package com.atguigu.e_super;

public class Zi {
public int num = 10;
public Zi(){
//this(10);
super();
System.out.println("子类无参构造方法…");
}
public Zi(int num)
{
this();
//super(num);
System.out.println("子类有参构造方法…");
}

// @Override
public void show() {
int num = 20;
System.out.println("子类方法…");
System.out.println(num);//10
System.out.println(this.num);
}
}

package com.atguigu.e_super;

public class Test01 {
public static void main(String[] args) {
Zi z = new Zi();
z.show();
System.out.println("—————————");
Zi z2 = new Zi();
z2.show();
}
}

比较简单,不过多赘述

方法的重写

在子类中对父类中的方法进行升级改造

this和super

1.调用父类构造:只能在子类的构造中使用
  super():调用父类无参构造
  super(实参):调用父类有参构造
2.调用父类成员变量:
  super.成员变量名
3.调用父类方法
  super.方法名()    

1.调用当前对象的构造:在本类的构造中使用
  this() 调用本类无参构造
  this(实参) 调用本类的有参构造
2.调用当前对象的成员变量
  this.成员变量名  
3.调用当前对象的方法
  this.方法名()

上述代码有二者的示例.

赞(0)
未经允许不得转载:网硕互联帮助中心 » Day7_面向对象_封装继承
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!