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

包(package) 用于管理程序中的类,主要用于解决类的同名问题。包可以看出目录。

包的作用

[1] 防止命名冲突。

[2] 允许类组成一个单元(模块),便于管理和维护

[3] 更好的保护类、属性和方法 

命名规范

包命名原则:始终保持类的全路径唯一。

规范:

[1]包名由小写字母组成,不能以圆点开头或结尾。圆的有特殊意义——包分隔符

[2]包名之前最好加上唯一的前缀,通常使用组织倒置的网络域名。如:域名javagroup.net

package net.javagroup.xx

[3]包名后续部分依不同机构内部的规范不同而不同

package net.javagroup.project1.projectname.xx

 在控台如何编译包:javac   -d   ./(当前文件夹)  ./Tset01.java      (javac -d  编译目的地   源文件)没个都有空格

编译完成后,Test01的全路径是cn.huang001.Test01

注意:编译时还没有包出来,不能用源文件的全路径形式

1.1 jvm提供的包


包名


描述


java.lang/语言包


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


java.util


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


java.io


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


java.net


网络编程


java.math


数学计算.Math.random


java.awt(C)


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

为什么要使用继承

为了提取两个类中公共的代码,可以使用继承抽取重复性的代码到一个公共类中,这个公共的类称为父类(super class)。继承于父类的类称为子类(sub class).

java继承的特性

[1] 单根性。在java中,一个类只能有一个直接父类。

[2] 传递性。C继承于B,B继承于A,C具有A的特性和行为。

类B继承于类A,使用关键字extends,B拥有了A中非私有的属性和方法

变量隐藏(C)

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

//如果引入两个相同名字的类时,其中一个可以用import,另一个如下

//其中一个在创建对象时写全路径

//java.util.Date date1 = new java.util.Date()

//用于定义包的位置 package 包名.包名
package cn.car;
//必须写到源代码的第一句
import cn.car.*;   //导入cn.car下的所有类
//import 用于导包,告诉类需要的其他类在什么位置!
//(在同一包不需要导入)
public class Test01{
    public static void main(String[] args){
        Carriage ca=new Carriage("","汽车","武大郎");
        ca.carriage();
        Taxi caa=new Taxi("","京B123","景顺出租车公司");
        caa.taxi();

    }
}
//java继承父类(公共类)是多个类的共有的属性和方法
//单根性。在java中,一个类只能有一个直接父类。
//传递性。C继承于B,B继承于A,C具有A的特性和行为。

//父类
package cn.car;

public class Car{
   private String motorcyle;
  private String number;

  public void setMotorcyle(String motorcyle){
      this.motorcyle=motorcyle;
  }
  public String getMotorycle(){
      return this.motorcyle;
  }
   public void setNumber(String number){
       this.number=number;
   }
   public String getNumber(){
       return this.number;
   }
  public  Car(){

  }
  public Car(String motorcyle,String number){
      this.setMotorcyle(motorcyle);
      this.setNumber(number);
  }
}


//java继承子类
//类B继承于类A,使用关键字extends,B拥有了A中非私有的属性和方法。
//导入cn.car下的Carriage类
//先导入父类在继承父类(同一包不需要导入)
//子类不能继承private成员,不能继承构造方法,父类子类不在同包不能使用默认访问

//子类
package cn.car;
import cn.car.Car;
public class Carriage extends Car{
private String name;
public void setName(String name){
this.name=name;
}
public String getName(){
return name;
}

public Carriage(){//无参构造

}//有参构造
public Carriage(String motorcyle,String number,String name){
super(motorcyle,number);
this.setName(name);
}
public void carriage(){
System.out.println("我是"+this.name+",我的"+super.getNumber()+"我做主");
System.out.println("目的地到了,我们去玩吧");
}
}


//java继承子类
//类B继承于类A,使用关键字extends,B拥有了A中非私有的属性和方法。
package cn.car;
import cn.car.Car;
public class Taxi extends Car{
private String company;

public void setCompany(String company){
    this.company=company;
}
public String getCompany(){
    return this.company;
}

public Taxi(){

}
public Taxi(String motorcyle,String number,String company){
    //super关键字表示父类对象,只是一个关键字,里面没有引用
    //super调用父类构造方法时,必须写到构造方法有效代码第一句
    super(motorcyle,number);
    //super可以访问父类的非私有属性。私有的属性不能用super访问。
    this.setCompany(company);
}    public void taxi(){
    System.out.println("乘客您好");//// 当需要访问父类的属性时,优先使用super
    System.out.println("我是"+company+"的,我的车牌是"+super.getNumber()+",您要去哪里?");
    System.out.println("目的地已经到了,请您付费下车,欢迎再次乘坐");
}//super.父类方法名();  可以把父类的方法继承过来

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

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

 

静态导入

如果一个类中定义的属性和方法都是静态时,可以考虑使用静态导入。jdk1.5+ 出现。

如果子类 父类 全是静态变量或方法 就可以静态导入,静态导入后可以直接提取类中的变量和方法

import static cn.sxt01.Calc.*;

1.1 访问修饰符

java中存在4类访问修饰符,分别是private、默认、protected、public。


修饰符


本类?


同包子类


同包其他类


不同包子类


不同包其他类


private


?


?


?


?


?


默认


?


?


?


?


?


protected


?


?


?


?


?


public


?


?


?


?


?

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

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

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

public:公共的,都可以访问

 继承关系的初始化顺序

继承关系内存图

原文地址:https://www.cnblogs.com/406070989senlin/p/10753330.html

时间: 2024-08-07 06:42:14

java:包、继承,访问修饰符的相关文章

java包,访问修饰符和代码块

包声明: package com.xxx.yyy 需要写在第一行 访问类,导包:import 包名.包名.类名 import java.util.Scanner import com.xxx.yyy.A; 访问修饰符:public,protected,default,private private: 只能在本类中使用 private int a=1; default: 在本类中和同包内使用 int b=2; protected: 在本类,本包和相关子类中使用 protected int c=3;

(转) java中的访问修饰符

对Java中的修饰符一直记不住,现在结合网上的一些资料进行总结,并重点说明一下protected修饰符. 一. Java中的访问修饰符 Java面向对象的基本思想之一是封装细节并且公开接口.Java语言采用访问控制修饰符来控制类及类的方法和变量的访问权限,从而向使用者暴露接口,但隐藏实现细节.访问控制分为四种级别: (1)public: 用public修饰的类.类属变量及方法,包内及包外的任何类(包括子类和普通类)均可以访问: (2)protected: 用protected修饰的类.类属变量及

Java基础——protected访问修饰符探讨

Java基础——protected访问修饰符探讨 根据官方说法:(如图) protected修饰符是可以修饰其他包中的自损类的,但是我做了个实验,结果发现了一个有趣的现象! 具体请往下看: package com.demo1; public class Demo1 { protected Demo1(){ System.out.println("protected"); } protected void function(){ System.out.println("受保护方

1.27 Java基础总结 ①访问修饰符访问权限②类和方法的基本声明和使用1.27 Java基础总结 ①访问修饰符访问权限②类和方法的基本声明和使用

1.27 Java基础总结 ①访问修饰符访问权限②类和方法的基本声明和使用 成员变量(属性)①类中添加成员变量 访问修饰符 类型 变量名 private String name ②实例化对象调用类的构造方法类构造对象,Teacher one = new Teacher(): 有static的可以直接调用,因为static是类级别的 ③JavaBean里边一般规则应该有公共的无参构造应该有符合命名规范的get/set方法 ④对象的回收:没有任何引用指向该对象时,GC会回收 主动回收:对象 = nu

JAVA笔记8__内部类/链表的实现/包装类、享元设计模式/包、访问修饰符

/** * 内部类:在一个类的内部中定义的类 * 1. class Outer{ * class Inner{} * } * 2. class Outer{ //方法内部类 * public void doSomething(){ * class Inner(){} * } * } * 2*:1.方法内部类只能在定义该内部类的方法中实例化 * 2.方法内部类对象不能使用该内部类所在方法的非final局部变量 * (原因:局部变量随着方法调用的结束而消失,而new出来的内部类对象的作用域是可以在方

java的访问控制(包、访问修饰符、修饰符)

一.     java的类包 编写好一个源程序后,首先要执行javac命令进行编译源文件,并生成与源文件同名后缀为“.class”的字节码文件(类文件),该类文件与源文件默认在同一个目录中.该类文件是由用户创建的,而在java编程环境中,java本身提供了大量的类文件,在编程时可以直接引入使用,极大方便了程序的编写. 包的定义:是Java编程的基础,包蕴涵于标准类的体系结构和用户自己的程序中,包是有唯一命名的类的集合.在java中,包分为用户包和系统包. 一)用户包:即由用户在项目中创建的包.

JAVA中的访问修饰符和包

一.JAVA访问修饰符 访问修饰符,用来控制类中成员的可见性 有四个访问修饰符,分别是:default,private,public,protected 1.default(默认):默认时不需要写修饰符的.只能在同一包内访问. 2.private(私有):只能在同一类中访问. 3.public(公有):在任何地方都可以访问 4.protected(受保护的):类的继承中使用 二.包package 在大型项目中,往往会有几十甚至几百个类,如果不对类进行分类管理,后期进行维护时会有很大的不便. 所以

[转]java构造方法的访问修饰符

http://my.oschina.net/u/1464678/blog/210359 1.       类(class) 可见性修饰符: public—在所有类中可见,在其他包中可以用import导入.                              缺省—就是没有修饰符,在同一个包中的类中可见,在其他包中不能用import导入.               修饰符:final—终态类,表示该类不能被继承 abstract—抽象类,不能新建对象 2.       变量(variabl

黑马程序员_包、访问修饰符以及内部类

------- <a href="http://www.itheima.com" target="blank">android培训</a>.<a href="http://www.itheima.com" target="blank">java培训</a>.期待与您交流! ---------- 一.包:  1.定义包使用关键字:package: 1).注意事项: A.packag

java基础之访问修饰符protected

java的访问修饰符protected关键字让我很迷惑,网上的很多人业内人士的自我注解也依然没有消除我对这个关键字的认识. 我的疑惑有以下几点: 1:增设protected关键字的初衷,也就是说:这个的"受保护"的原理是什么?? 2:在Think in Java中,对protected定义是有误的. 3:protected的作用到底是什么呢? 4:涉及到继承. 在java编程思想中:通过阅读,我的理解是: 关于对有protected访问修饰符的类的继承,可以分为两种情况: (1)不同包