【java基础面向对象】方法的重写、 package和import包、访问控制修饰符,static,final,static final,抽象方法
目录
1. 方法的重写(override/overriding):重新写、覆盖
2. package和import:
3. 访问控制修饰符:-----------------------保护数据的安全
4. static:静态的
5. final:最终的、不可改变的---------------------应用率低
6. static final常量:应用率高
7. 抽象方法:
8. 抽象类:
1. 方法的重写(override/overriding):重新写、覆盖
class 餐馆{void 做餐(){ 做中餐 }}//1)我还是想做中餐---------------不需要重写class Aoo extends 餐馆{}//2)我想改做西餐-----------------需要重写class Aoo extends 餐馆{void 做餐(){ 做西餐 }}//3)我想在中餐基础之上加入西餐------需要重写(先super中餐,再加入西餐)class Aoo extends 餐馆{void 做餐(){super.做餐();做西餐}}
//超类大,派生类小class Aoo{ //超类(大)void show(){}double test(){ return 0.0; }Boo sayHi(){ return null; }Aoo say(){ return null; }}class Boo extends Aoo{ //派生类(小)//int show(){ return 1; } //编译错误,void时必须相等//int test(){ return 0; } //编译错误,基本类型时必须相等//Boo sayHi(){ return null; } //编译错误,引用类型时必须小于或等于Boo say(){ return null; } //正确,小于或等于}
2. package和import:
3. 访问控制修饰符:-----------------------保护数据的安全
说明:1. 类的访问权限,只能是public或默认的。而类中成员的访问权限,如上4种都可以。2. 访问权限由低到高依次为:private<默认的<protected<public
//访问控制修饰符的演示public class Coo {public int a; //任何类protected int b; //本类、派生类、同包类int c; //本类、同包类private int d; //本类void show(){a = 1;b = 2;c = 3;d = 4;}}class Doo{ //----------------------演示privatevoid show(){Coo o = new Coo();o.a = 1;o.b = 2;o.c = 3;//o.d = 4; //编译错误}}
import ooday04.Coo;public class Eoo { //-----------------演示同包的void show(){Coo o = new Coo();o.a = 1;//o.b = 2; //编译错误//o.c = 3; //编译错误//o.d = 4; //编译错误}}class Foo extends Coo{ //跨包继承-------演示protectedvoid show(){a = 1;b = 2;//c = 3; //编译错误//d = 4; //编译错误}}
4. static:静态的
//演示静态变量class Goo{int a;static int b;Goo(){a++;b++;}void show(){System.out.println("a="+a+",b="+b);}}public class StaticDemo {public static void main(String[] args) {Goo o1 = new Goo();o1.show();Goo o2 = new Goo();o2.show();Goo o3 = new Goo();o3.show();System.out.println(Goo.b); //常常通过类名点来访问}}
//演示静态方法class Hoo{int a; //实例变量(由对象来访问)static int b; //静态变量(由类名来访问)void show(){ //有thisSystem.out.println(this.a);System.out.println(Hoo.b);}static void test(){ //没有this//静态方法中没有隐式this传递//没有this就意味着没有对象//而实例变量a是必须由对象来访问的//所以如下代码发生编译错误//System.out.println(a); //编译错误System.out.println(Hoo.b);}}//演示何时设计为静态方法class Ioo{int a; //对象的属性//在show()中访问了对象的属性,意味着show()方法与对象有关,不能设计为静态方法void show(){System.out.println(a);}//在plus()中没有访问对象的属性,意味着plus()方法与对象无关,可以设计为静态方法static int plus(int num1,int num2){int num = num1+num2;return num;}}public class StaticDemo {public static void main(String[] args) {Hoo.test(); //常常通过类名点来访问}}
//演示静态块class Joo{static{System.out.println("静态块");}Joo(){System.out.println("构造方法");}}public class StaticDemo {public static void main(String[] args) {Joo o4 = new Joo();Joo o5 = new Joo();Joo o6 = new Joo();}}
5. final:最终的、不可改变的---------------------应用率低
class Aoo{
final int a = 5;
void show(){
//a = 55; //编译错误,final的变量不能被改变
}
}
class Boo{
final void show(){ }
void test(){ }
}
class Coo extends Boo{
//void show(){ } //编译错误,final的方法不能被重写
void test(){ }
}
final class Doo{}
//class Eoo extends Doo{} //编译错误,final的类不能被继承
class Foo{}
final class Goo extends Foo{} //正确,不能当老爸,但能当儿子
6. static final常量:应用率高
public class StaticFinalDemo {public static void main(String[] args) {
System.out.println(Hoo.PI); //常常通过类名点来访问
//Hoo.PI = 3.1415926; //编译错误,常量不能被改变
//1)加载Ioo.class到方法区中
//2)静态变量num一并存储在方法区中
//3)到方法区中获取num的值并输出
System.out.println(Ioo.num);
//编译器在编译时会将常量直接替换为具体的值,效率高
//相当于System.out.println(5);
System.out.println(Ioo.COUNT);
}
}class Ioo{
public static int num = 5; //静态变量
public static final int COUNT = 5; //常量
}
class Hoo{
public static final double PI = 3.14159;
//public static final int NUM; //编译错误,常量必须声明同时初始化
}
7. 抽象方法:
8. 抽象类:
抽象方法存在的意义是什么?
保证当发生向上造型时,通过超类的引用能点出来那个方法-----------保证能点出方法来
既然抽象方法的意义是保证能点出来,那为什么不设计为普通方法呢?
设计为普通方法,意味着派生类可以重写也可以不重写,但设计为抽象方法,则可以强
制派生类必须重写-----------强制派生类重写,可以达到统一的目的
【java基础面向对象】方法的重写、 package和import包、访问控制修饰符,static,final,static final,抽象方法相关推荐
- Java基础学习必备(2)(继承、多态、修饰符、抽象类、接口)
文章目录 继承 继承的概述 继承的好处和弊端 继承中变量的访问特点 super关键字 继承中构造方法的访问特点 继承中成员方法的访问特点 super内存图 方法重写 方法重写注意事项 Java中继承的 ...
- 【Java基础】多态、equals、造型cast、访问修饰符(public、protected、default、private)、static、final
1.面型对象–多态 多态的概念:多态性就是指同样的消息被类的不同的对象接收时导致的完全不同的行为的一种现象.这里的消息即对类成员函数的调用. 实现上面调用宠物叫,每种宠物有各自的叫声 public c ...
- Java基础-面向对象第二特征之继承(Inheritance)
Java基础-面向对象第二特征之继承(Inheritance) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.继承的概述 在现实生活中,继承一般指的是子女继承父辈的财产.在程序 ...
- Java 基础 - 面向对象(不错N多教程集合)
著作权归https://pdai.tech所有. 链接:Java 基础 - 面向对象 | Java 全栈知识体系 本文主要介绍Java OOP 面向对象基础和相关类图.@pdai Java 基础 - ...
- 基于Java基础-面向对象实现植物大战僵尸简易版
基于Java基础-面向对象实现植物大战僵尸简易版 前言 游戏设计 游戏对象 游戏内容 游戏优化 放置植物的优化 移除植物的优化 游戏可玩性的优化 添加游戏背景音乐 后续优化 源码分享 前言 从零开始学 ...
- Java基础学习——方法
Java基础学习--方法 前言 本文将介绍有关Java面向对象编程的知识之一:方法:其中包括方法的概念,三类方法的格式.方法的重载以及方法的内存 方法的概念 方法是程序中最小的执行单元 方法定义:将一 ...
- (20)Java基础 --面向对象(1)
目录 面向对象 一.概述 二.生活举例 三.类与对象的关系 四.类的构成 五.类的定义 类的属性 类的方法 创建实例(对象) 内存分配图 六.对象的基本使用 七.局部变量与成员变量的区别 八.面向对象 ...
- 【Java基础面向对象】 汽车销售管理系统
前言: 因为是初学者,我已自己能理解的范围来写这篇博客,对面向对象加以熟悉. 基本知识点: 面向对象: 封装:类.属性.方法 从学习面向对象开始,我们基本不将主函数和属性和方法写在同一个类中 我们会创 ...
- Java10-day01【继承(变量-构造方法访问-成员方法 访问)、super内存图、方法重写、继承、包、import、权限修饰符、final、static】
视频+资料(工程源码.笔记)[链接:https://pan.baidu.com/s/1MdFNUADVSFf-lVw3SJRvtg 提取码:zjxs] Java基础--学习笔记(零起点打开java ...
最新文章
- mfc 制作不同的文档模板mdi不同的子窗体_制作ACK集群自定义节点镜像的正确姿势...
- 中文预训练模型ZEN开源,效果领域内最佳,创新工场港科大出品
- pygame学习和python巩固——字体显示
- nyoj1307Linux的文件权限对不对
- 理科大学二本计算机系,大学最好就业的二本专业:高校男生女生二本理科比较好的专业...
- Ubuntu 安装 Sun JDK
- bookStore第二篇【图书模块、前台页面】
- 软考备战系列一----软件测试基础
- 远控免杀专题 14 ---AVIator
- Glib2之dbus用法(五)
- ComponentArt Web.UI控件的bug及解决办法
- docker及入门使用(centos7.6)
- Java中的JUnit单元测试
- 计算机桌面黑屏有鼠标,win7系统启动黑屏只有显示鼠标指针怎么办(图文)
- 在线运行Java代码获取APNIC中国区的ip段,用作绕过国内ip
- XShell免费正版远程控制ssh客户端
- WIFI设备配网之微信小程序开发AP配网
- Nacos Committer 张龙:Nacos Sync 的设计原理和规划
- Xen - Networking
- vue 二维码+条形码识别
热门文章
- (在WPS或者WORD中使用MathType编辑数学公式)写论文必备
- 猿创征文|从mysql 到kingbase(人大金仓)
- ROS(五)之话题编程:msg文件
- 常见的反常积分判断敛散性方法
- Field myFeignClient in com.zkh.controller.FeignController required a bean of type 'com.zkh.feign.MyF
- (一)大型电商详情页亿级缓存架构简介
- python 轨迹 车辆_ArcGIS+ArcPy制作船舶(车辆)轨迹热力图
- maven常用中央仓库
- 腾讯视频url获取方法
- MATLAB函数——lowpass