包与继承

包的含义:

可以理解为包就是目录。

包的作用:

1.解决类同名的问题。

2.更好的管理、维护、保护类。

包的定义:

package 必须放在有效代码的第一句。

1 package cn.sxt;
2
3 public class Test01{
4     public static void main(String[] args){
5         System.out.println("test package");
6     }
7 }

编译带包的源文件

1 javac -d 源文件 目的文件

例子:

编译完成后的全路径为cn.sxt.Test01.

2.导入包(B)

形式:

import cn.sxt.Test01 ;//导入cn.sxt包下的Test01类

import cn .sxt.*;//导入cn.sxt包下的所有类。

1 package cn.sxt01;
2 public class Test01{
3     public static void main(String[] args){
4         Student s = new Student();
5     }
6 }
 1 package cn.sxt02;
 2
 3 public class Student{
 4     private String name;
 5
 6     public void setName(String name){
 7         this.name = name;
 8     }
 9     public String getName(){
10         return this.name;
11     }
12 }

1 package cn.sxt01;
2
3 + import cn.sxt02.Student;
4 public class Test01{
5     public static void main(String[] args){
6         Student s = new Student();
7     }
8 }

package cn.sxt01;

import cn.sxt02.Student;
public class Test01{
    public static void main(String[] args){
        Student s = new Student();
    }
}
 1 package cn.sxt02;
 2
 3 public class Student{
 4     private String name;
 5
 6     public void setName(String name){
 7         this.name = name;
 8     }
 9     public String getName(){
10         return this.name;
11     }
12 }

编译过程

运行效果

3.不同包中的同名同类的包用法(B)

(1)创建对象时写全路径如:

1import java.util Date;
2 import java.sql.*;
3 public class Test{
4    public static void main(String[] args){
5    java.sql.Date sc = new java.sql.Date();
6     }
7 }
 

包名


描述


java.lang/语言包


系统默认导入,String类保存在这个包中,所以我们在使用String时不需要导包


java.util


工具包,一些常用的类库,Scanner,Date,Arrays


java.io


输入输出处理,文件的读写等


java.net


网络编程


java.math


数学计算.Math.random


java.awt(C)


这个包中的类用于构建和管理应用程序的图形用户界面

4.静态导入(B)

方法和属性静态时考虑用静态导入

1 package cn.sxt01;
2 public class Calc{
3     public static float PI = 3.14f;
4
5     public static int add(int a,int b){
6         return a+b;
7     }
8 }
 1 package cn.sxt02;
 2
 3 // import cn.sxt01.Calc;
 4 // 静态导入
 5 import static cn.sxt01.Calc.*;
 6 public class Test01{
 7     public static void main(String[] args){
 8         System.out.println(PI);
 9         System.out.println(add(1,2));
10     }
11 }

5.继承(A)

理解:当两个类中有多个相同的属性时我们可以创建一个父类如:Farther,创建一个子类Son;用public class Son extends Farther语句继承,其中用关键字super可以直接访问父类属性方法,子类不能继承父类的私有化属性、方法。

1 public class Person{
2     String name;
3     int age;
4
5     public void showInfo(){
6         System.out.println("姓名:"+name);
7         System.out.println(",年龄:"+age);
8     }
9 }
1 public class Student extends Person{
2
3 }
1 public class Test01{
2     public static void main(String[] args){
3         Student s = new Student();
4         s.name = "张三";
5         s.age = 20;
6         s.showInfo();
7     }
8 }

6.super关键字(A)

super关键字表示父类对象,只是一个关键字,里面没有引用。

[1]super访问父类构造方法

 1 public Dog(String name,int health,int love,String strain){
 2         /*
 3         this.setName(name);
 4         this.setHealth(health);
 5         this.setLove(love);
 6         */
 7         super(name,health,love);
 8         this.setStrain(strain);
 9
10     }

Super调用父类构造方法时,必须写到构造方法有效代码第一句

[2] super调用父类的非私有属性

super可以访问父类的非私有属性。私有的属性不能用super访问。

 1 public class Fruit{
 2     float price;
 3 }
 4 public class Apple extends Fruit{
 5
 6     public void showInfo(){
 7         // 不推荐使用
 8         //System.out.println("价格:"+price);
 9         //System.out.println("价格:"+this.price);
10         // 当需要访问父类的属性时,优先使用super
11         System.out.println("价格:"+super.price);
12     }
13
14 }

变量隐藏(C)

当子类定义了一个和父类同名的属性时,在子类中优先访问子类的属性,如果要访问父类属性一定要加super。

如果要访问父类属性,通过super;如果要访问子类属性,通过this.

1 public class Fruit{
2     float price;
3
4     private String color;
5
6     int weight = 100;
7 }
 1 public class Apple extends Fruit{
 2
 3     int weight = 200;
 4
 5     public void showInfo(){
 6         // 不推荐使用
 7         //System.out.println("价格:"+price);
 8         //System.out.println("价格:"+this.price);
 9         // [1]当需要访问父类的属性时,优先使用super
10         System.out.println("价格:"+super.price);
11
12         // [2]不能访问父类的私有属性
13         // System.out.println("颜色:"+super.color);
14
15         // [3] 访问和父类同名的变量weight
16         System.out.println("重量:"+weight);
17         System.out.println("重量:"+this.weight);
18         System.out.println("重量:"+super.weight);
19     }
20
21 }

子类继承父类资源

访问修饰符

private:私有的,只能在本类可以访问。

friendly:默认的,同包可访问,也称包访问权限。

protected:受保护的, ①子类可访问 ②同包可访问 

public:公共的,都可以访问

继承关系内存图

方法的重写

当子类从父类继承过来的方法不能满足自身需要时,子类可以根据自身情况进行方法重写(overwrite/override)

方法重写建立在继承的基础上,没有继承,就没有重写!

子类根据自身情况,可以选择部分重写和完全重写。

部分重写

1 public void showInfo(){
2         super.showInfo();
3         System.out.println("我是一只"+this.getStrain());
4     }

完全重写

1 public void showInfo(){
2         System.out.println("--"+super.getName()+"--");
3         System.out.println("健康值:"+super.getHealth());
4         System.out.println("亲密度:"+super.getLove());
5         System.out.println("品种:"+this.getStrain());
6     }

重写的规则

[1]方法名称相同

[2]参数列表相同

[3]子类的访问权限一定 >= 父类访问权限

[4]返回值和父类相同或者是其子类

原文地址:https://www.cnblogs.com/xfbb/p/10753366.html

时间: 2024-10-30 14:44:58

包与继承的相关文章

获取指定包名下继承或者实现某接口的所有类(扫描文件目录和所有jar)

import java.io.File; import java.io.FileFilter; import java.io.IOException; import java.net.JarURLConnection; import java.net.URL; import java.net.URLDecoder; import java.util.Enumeration; import java.util.Iterator; import java.util.LinkedHashSet; im

java:包、继承,访问修饰符

包 包(package) 用于管理程序中的类,主要用于解决类的同名问题.包可以看出目录. 包的作用 [1] 防止命名冲突. [2] 允许类组成一个单元(模块),便于管理和维护 [3] 更好的保护类.属性和方法  包命名规范 包命名原则:始终保持类的全路径唯一. 规范: [1]包名由小写字母组成,不能以圆点开头或结尾.圆的有特殊意义——包分隔符 [2]包名之前最好加上唯一的前缀,通常使用组织倒置的网络域名.如:域名javagroup.net package net.javagroup.xx [3]

包和继承

一:包 包(package) 用于管理程序中的类,主要用于解决类的同名问题.包可以看出目录. 1.包的作用 [1] 防止命名冲突. [2] 允许类组成一个单元(模块),便于管理和维护. [3] 更好的保护类.属性和方法.  2.定义包 package 用于定义包,必须写到源文件的有效代码的第一句. 1 package cn.sxt; 2 public class Test01{ 3 public static void main(String[] args){ 4 System.out.prin

08 包_继承

1 包 继承 1.1 包 1.1.1 为什么会使用包? 为了更好的管理同名的类. 包就是目录   包解决的问题---类的同名问题. [1] 防止命名冲突. [2] 易于管理包和类. [3] 更好的保护类.属性.方法.     1.1.2 创建包 通过关键字package 创建包,package 一定要出现在类文件的第一句.   包的命名规则 [1]包名由小写字母组成,不能以圆点开头或结尾 e.g: package sxt;   [2]包名之前最好加上唯一的前缀,通常使用组织倒置的网络域名.如:域

Maven中模块的聚合以及对jar包的继承

我需要将之前的A B C三个模块聚合到一个一个工程中ABC项目中 pom.xml文件中应该这样配置 1.修改packaging里面的配置 <!-- 用于聚合这个项目的时候应该将packaging打包成pom --> <packaging>pom</packaging> 2.将在modules文件中加入如下 <!-- 该标签用于对maven进行聚合的作用也就是说将下面三个项目进行打包 --> <modules> <module>../A

Struts.xml配置中的包介绍

<package name="itcast" namespace="/test" extends="struts-default"> <action name="helloworld" class="cn.itcast.action.HelloWorldAction" method="execute" > <result name="success

Java 方法重载,方法重写(覆盖),继承等细节注意

1.方法重载(method overload)的具体规范 如果有两个方法的方法名相同,但参数不一致,那么可以说一个方法是另一个方法的重载. 一.方法名一定要相同. 二.方法的参数表必须不同,包括参数的类型或个数,以此区分不同的方法体. 1.如果参数个数不同,就不管它的参数类型了! 2.如果参数个数相同,那么参数的类型或者参数的顺序必须不同. 三.方法的返回类型.修饰符可以相同,也可不同. 四.main方法也可以被重载 方法重载的作用:可以一个相同的方法传入不同的参数以达到想要的结果 2.方法继承

java面向对象(继承)

继承 对某一批类的抽象,减少代码量,便于方法的修改,类的管理 子类不能继承父类:①构造方法②私有属性和方法③使用默认修饰符不在同包下 继承初始化:父类属性->父类构造方法->子类属性->子类构造方法 继承有哪些:①重载②重写③接口④父类对象引用指向子类对象 重写规则:①方法名一样②参数列表相同③返回值类型相同或是其子类④访问修饰权限不能严于父类 private(本类)>default(同包)>protected(同包及子类)>public(全部) super / thi

对封装、继承、多态的理解。

1.封装     封装:就是隐藏对象的属性和实现细节,仅对外提供公共访问方式. 封装的具体步骤:修改属性的可见性来限制对属性的访问;为每个属性创建一对赋值(setter)方法和取值(getter)方法,用于对这些属性的存取;在赋值方法中,加入对属性的存取控制语句. 封装的好处主要有:隐藏类的实现细节;让使用者只能通过程序员规定的方法来访问数据;可以方便的加入存取控制语句,限制不合理操作. 封装时的权限控制符区别如下: 1 /* 2 * 封装演示 3 */ 4 public class Dog {