不同修饰符使用细节

  常用来修饰类、方法、变量的修饰符如下:

    public 权限修饰符,公共访问, 类,方法,成员变量

    protected 权限修饰符,受保护访问, 方法,成员变量

    默认什么也不写 也是一种权限修饰符,默认访问, 类,方法,成员变量

    private 权限修饰符,私有访问, 方法,成员变量

    static 静态修饰符  方法,成员变量

    final 最终修饰符   类,方法,成员变量,局部变量

    abstract 抽象修饰符  类 ,方法

  注意:

    我们编写程序时,权限修饰符一般放于所有修饰符之前,不同的权限修饰符不能同时使用;

    同时,abstract与private不能同时使用;

    同时,abstract与static不能同时使用;

    同时,abstract与final不能同时使用。

  修饰类能够使用的修饰符:

  修饰类只能使用public、默认的、final、abstract关键字

使用最多的是 public关键字

public class Demo {} //最常用的方式
class Demo2{}
public final class Demo3{}
public abstract class Demo4{}

  修饰成员变量能够使用的修饰符

  public : 公共的

protected : 受保护的

   : 默认的

private :私有的

final : 最终的

static : 静态的

使用最多的是 private

public int count = 100;
protected int count2 = 100;
int count3 = 100;
private int count4 = 100; //最常用的方式
public final int count5 = 100;
public static int count6 = 100;

  修饰构造方法能够使用的修饰符:

public : 公共的

protected : 受保护的

: 默认的

private :私有的

使用最多的是 public

public Demo(){} //最常用的方式
protected Demo(){}
Demo(){}
private Demo(){} 

  修饰成员方法能够使用的修饰符:

public : 公共的

protected : 受保护的

: 默认的

private :私有的

final : 最终的

static : 静态的

abstract : 抽象的

使用最多的是 public

public void method1(){}//最常用的方式
protected void method2(){}
void method3(){}
private void method4(){}
public final void method5(){}
public static void method6(){}//最常用的方式
public abstract void method7();//最常用的方式

自定义数据类型的使用

  定义长方形类,包含求周长与求面积的方法

  定义数学工具类,包含求两个数和的二倍与求两个数积的方法

    思考:这两个类的计算方法均需要两个数参与计算,请问两个数定义在成员位置还是形参位置更好,为什么?

    如果变量是该类的一部分时,定义成成员变量。

  如果变量不应该是类的一部分,而仅仅是功能当中需要参与计算的数,则定义为形参变量。

  实例:数学工具类

public class MathTool {
//求两个数的和的二倍
public double sum2times(int number,int number2) {
return (number+number2)*2;
}
//求两个数的积
public double area(int number,int number2) {
return number*number2;
}
}

  实例:长方形类

public class CFX {
//因为长与宽,在现实事物中属于事物的一部分,所以定义成员变量
private int chang;
private int kuan; public CFX(int chang, int kuan) {
this.chang = chang;
this.kuan = kuan;
} //求长与宽的周长
public double zhouChang() {
return (chang+kuan)*2;
}
//求长与宽的面积
public double mianJi() {
return chang*kuan;
}
public int getChang() {
return chang;
}
public void setChang(int chang) {
this.chang = chang;
}
public int getKuan() {
return kuan;
}
public void setKuan(int kuan) {
this.kuan = kuan;
}
}

  类作为方法参数与返回值 

    类作为方法参数

    在编写程序中,会经常碰到调用的方法要接收的是一个类类型的情况,那么这时,要向方法中传入该类的对象。如下代码演示:

class Person{
public void show(){
System.out.println("show方法执行了");
}
}
//测试类
public class Test {
public static void main(String[] args) {
//创建Person对象
Person p = new Person();
//调用method方法
method(p);
} //定义一个方法method,用来接收一个Person对象,在方法中调用Person对象的show方法
public static void method(Person p){
p.show();
}
}

  类作为方法返回值

    写程序调用方法时,我们以后会经常碰到返回一个类类型的返回值,那么这时,该方法要返回一个该类的对象。如下代码演示:

class Person{
public void show(){
System.out.println("show方法执行了");
}
}
//测试类
public class Test {
public static void main(String[] args) {
//调用method方法,获取返回的Person对象
Person p = method();
//调用p对象中的show方法
p.show();
} //定义一个方法method,用来获取一个Person对象,在方法中完成Person对象的创建
public static Person method(){
Person p = new Person();
return p;
}
}

  抽象类作为方法参数与返回值

  抽象类作为方法参数

  今后开发中,抽象类作为方法参数的情况也很多见。当遇到方法参数为抽象类类型时,要传入一个实现抽象类所有抽象方法的子类对象。如下代码演示:

//抽象类
abstract class Person{
public abstract void show();
}
class Student extends Person{
@Override
public void show() {
System.out.println("重写了show方法");
}
}
//测试类
public class Test {
public static void main(String[] args) {
//通过多态的方式,创建一个Person类型的变量,而这个对象实际是Student
Person p = new Student();
//调用method方法
method(p);
} //定义一个方法method,用来接收一个Person类型对象,在方法中调用Person对象的show方法
public static void method(Person p){//抽象类作为参数
//通过p变量调用show方法,这时实际调用的是Student对象中的show方法
p.show();
}
}

  抽象类作为方法返回值

  抽象类作为方法返回值的情况,也是有的,这时需要返回一个实现抽象类所有抽象方法的子类对象。如下代码演示:

//抽象类
abstract class Person{
public abstract void show();
}
class Student extends Person{
@Override
public void show() {
System.out.println("重写了show方法");
}
}
//测试类
public class Test {
public static void main(String[] args) {
//调用method方法,获取返回的Person对象
Person p = method();
//通过p变量调用show方法,这时实际调用的是Student对象中的show方法
p.show();
} //定义一个方法method,用来获取一个Person对象,在方法中完成Person对象的创建
public static Person method(){
Person p = new Student();
return p;
}
}

 接口作为方法参数与返回值

  接口作为方法参数

  接口作为方法参数的情况是很常见的,经常会碰到。当遇到方法参数为接口类型时,那么该方法要传入一个接口实现类对象。如下代码演示。

//接口
interface Smoke{
public abstract void smoking();
}
class Student implements Smoke{
@Override
public void smoking() {
System.out.println("课下吸口烟,赛过活神仙");
}
}
//测试类
public class Test {
public static void main(String[] args) {
//通过多态的方式,创建一个Smoke类型的变量,而这个对象实际是Student
Smoke s = new Student();
//调用method方法
method(s);
} //定义一个方法method,用来接收一个Smoke类型对象,在方法中调用Smoke对象的show方法
public static void method(Smoke sm){//接口作为参数
//通过sm变量调用smoking方法,这时实际调用的是Student对象中的smoking方法
sm.smoking();
}
}

  接口作为方法返回值

  接口作为方法返回值的情况,在后面的学习中会碰到。当遇到方法返回值是接口类型时,那么该方法需要返回一个接口实现类对象。如下代码演示。

//接口
interface Smoke{
public abstract void smoking();
}
class Student implements Smoke{
@Override
public void smoking() {
System.out.println("课下吸口烟,赛过活神仙");
}
}
//测试类
public class Test {
public static void main(String[] args) {
//调用method方法,获取返回的会吸烟的对象
Smoke s = method();
//通过s变量调用smoking方法,这时实际调用的是Student对象中的smoking方法
s.smoking();
} //定义一个方法method,用来获取一个具备吸烟功能的对象,并在方法中完成吸烟者的创建
public static Smoke method(){
Smoke sm = new Student();
return sm;
}
}

Java 基础 面向对象修饰符和自定义数据类型的更多相关文章

  1. java中的修饰符和基本数据类型

    1.java中的修饰符 java中的修饰符主要是用来对类资源进行一个权限控制,上面表格表现的很清晰,无需多言. 2.java中的基本数据类型 java中的数据类型分为引用类型和基本类型.基本数据类型有 ...

  2. java基础之修饰符和内部类

    1.java修饰符 /* 修饰符: 权限修饰符:private,默认的,protected,public 状态修饰符:static,final 抽象修饰符:abstract 类: 权限修饰符:默认修饰 ...

  3. Java基础-访问修饰符

    访问修饰符 default (即缺省,什么也不写): 在同一包内可见,不使用任何修饰符.使用对象:类.接口.变量.方法. private : 在同一类内可见.使用对象:变量.方法. 注意:不能修饰类( ...

  4. JAVA基础_修饰符

    引言:Java的修饰符根据修饰的对象不同,分为类修饰符.方法修饰符.变量修饰符,其中每种修饰符又分为访问控制修饰符和非访问控制修饰符.访问控制存在的原因:a.让客户端程序员无法触及他们不应该触及的部分 ...

  5. java基础之 修饰符

    一.访问修饰符 Java中,可以使用访问控制符来保护对类.变量.方法和构造方法的访问.Java 支持 4 种不同的访问权限. 1.default (即缺省,什么也不写): 在同一包内可见,不使用任何修 ...

  6. 4. java基础之修饰符

    其他修饰符 public 可以修饰属性.方法.构造方法.类 protected 可以修饰属性.方法.构造方法 default 可以修饰属性.方法.构造方法.类 private 可以修饰属性.方法.构造 ...

  7. Java基础-面向对象第三大特性之多态(polymorphism )

    Java基础-面向对象第三大特性之多态(polymorphism) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.多态概述 多态是继封装,继承之后,面向对象的第三大特性,多态的 ...

  8. Java基础-面向对象第二特征之继承(Inheritance)

    Java基础-面向对象第二特征之继承(Inheritance) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.继承的概述 在现实生活中,继承一般指的是子女继承父辈的财产.在程序 ...

  9. 第二十七节:Java基础面向对象-静态,单例模式,继承详情知识点

    前言 Java基础面向对象-静态,单例模式,继承详情知识点.静态-static关键字,static变量,静态代码块,代码块(不加静态),对象创建过程,单例模式,继承. 静态-static关键字 // ...

随机推荐

  1. Android数据解析——JSON

    示例一: 有这样一个JSON需要解析,比如: {"thresholds": {"1e-3": 65.3,"1e-5": 76.5," ...

  2. easyui datagrid 弹出页面会出现两个上下滚动条处理办法!

    同事推荐将datagrid上加一个toolbar 将上面的工具元素加上就可以了 toolbar: '#divListToolbar',

  3. 洛谷P1182 数列分段【二分】【贪心】

    题目:https://www.luogu.org/problemnew/show/P1182 题意: 有n个数,要分成连续的m段.将每段中的数相加,问之和的最大值的最小值是多少. 思路: 和P1316 ...

  4. ES6 import

    ES6标准发布后,module成为标准,标准的使用是以export指令导出接口,以import引入模块,但是在我们一贯的node模块中,我们采用的是CommonJS规范,使用require引入模块,使 ...

  5. HDU 6229 - Wandering Robots - [概率题]

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6229 转载: https://blog.csdn.net/Anna__1997/article/det ...

  6. 一道与时间差有关的SQL面试题

    题目: 一组通话记录(总共500万条):ID 主叫号码 被叫号码 通话起始时间 通话结束时间 通话时长1 98290000 0215466546656 2007-02-01 09:49:53.000 ...

  7. vim操作表

  8. 分布式事务之TCC服务设计和实现注意事项

    分布式事务之TCC服务设计和实现注意事项-云栖社区-阿里云 https://yq.aliyun.com/articles/609854 分布式事务之TCC事务丶一个站在Java后端设计之路的男青年个人 ...

  9. mysql中建立索引的一些原则

    1.先存数据,再建索引 有索引的好处是搜索比较快但是在有索引的前提下进行插入.更新操作会很慢 2.不要对规模小的数据表建立索引,数据量超过300的表应该有索引:对于规模小的数据表建立索引 不仅不会提高 ...

  10. iOS - 常用的CG结构体

    CGPoint.CGSize.CGRect.CGRectEdge实际上都是结构体 一,几个常用的结构体 CGPoint   定义一个点,设置x坐标和y坐标 struct CGPoint { CGFlo ...