两个so直接传递string_七:Abstractclass;Interface;Innerclass;String -class

第一:

使用abstract修饰的class是抽象类

抽象类不可以创建object

抽象类可以有construction method

抽象类中,可以包括:1.member variable

2.member method

3.static method

4.construction method

5.final method(final修饰的method,只

可以被子类调用,不可以

被子类重写)

  1. 使用abstract方法修饰的method是抽象方法。
  2. 抽象方法没有method body,只能以 ; 结尾。
  3. 一个class,只要用abstract method,就一定是abstract class
  4. 当然,abstract class 可以包含0个或多个abstract method

subclass必须实现superclass的abstract method,否则就报错(注:if subclass want to be a abstract class ,it can not override the superclass’abstract method.)

  1. 通过抽象类,可以避免子类设计的随意性。通过抽象类, 我们就可以做到严格限制子类的设计,使子类之间更加通 用。(程序的可扩展和可维护性) 什么情况下使用抽象类?父类的名称比较抽象,创建对象无 意义。

第二:

2.接口详解

如果一个类中所有的方法均为 abstract 方法,那么这个类就可以声明为接口

public abstract class MyClass {

public abstract void show();

public abstract String fun();

public abstract int [] method();

可以改为如下代码

public interface MyInterface {

void show();

String fun();

int [] method();

}

i注:nterface中,不允许定义construction method

2.2 接口的定义
使用 interface 修饰,是一种数据类型,引用数据类型

接口的定义:

3735064b8a9e4f6d4d451428bf0f0c6a.png

public interface MyInterface { void show();

}

接口中可以包含什么?

(1) 抽象方法
public abstract 方法

(2) 非抽象方法

/**JDK1.8新特性 ,interface中,可以包含非抽象方法,但是定义非抽象方法前面必须有default modifier*/

public default void method2(){

}

(3) interface中定义的属性必须由public static final 这三个modifier 修饰,public static final 可以省略不写,eclipse会自动补齐。但是我们要知道,interface中的member variable是什么type的,这样就可以避免一些mistakes。

22d801b40b08b64b084e38ed83977487.png

public interface MyInterface

{


String name="张三";


public static final String name2="张三";

}

接口中可不可以包含构造方法吗?

不允许,因为接口不是类

接口与类的关系?

(1) 类去实现接口中的抽象方法,实现关系 ,implements

public class InterfaceImpl implements MyInterface

{

//实现接口中的所有抽象方法

}

(2) 一个类存在继承关系,又存在实现关系?extends 还是implements 在前?

继承 :父子关系 ——亲爹

实现 :实现关系——干爹

So,extends 在前,implements 在后

public class Stuent extends Person implements Play

{

}

(3) 如果父类与接口中有完全相同的方法(一模一样),子类 /实现类所实现的方法是父类的?接口的?

父类优先于接口,子类实现的是父类中的方法

(4) 如果父类中与接口中有同名方法,对子类/实现类有什 么要求呢?

如果父类与接口中的方法的method-name相同的话,在子类/实现类中必须构成构成method的overload。

Interface的modifier:abstract(默认不写)

interface中属性的修饰符:public static final

interface方法的修饰符:public abstract(默认不写)

第三:

3.接口的特征和使用接口的意义

3.1 接口的特征

1) 接口的传递性

package com.bjsxt.interfacepro;

public interface InterfaceA { public void show();

}
interface InterfaceB extends InterfaceA{

}
interface InterfaceC extends InterfaceB{

}
class Impl implements InterfaceC{

@Override

public void show()

{


// TODO Auto-generated method stub

}

}

2) 接口的继承性 (interface可以多继承)

package com.bjsxt.interfacepro;

public interface InterfaceA { public void show();

}
interface InterfaceB {

}
interface InterfaceC extends InterfaceB,InterfaceA{

}


class Impl implements InterfaceC

{

@Override

public void show() {
// TODO Auto-generated method stub

}

}

3.2 使用接口的意义: 可以实现设计和实现的分离,抽象出 N 多不同类的共同点。

举例:飞机,鸟,球,导弹,宇宙飞船......

***extend membership 要满足 is –a 关系

eg:三角形 is a 几何图形

鸟isa球? 不成立

***interface membership要满足 has–a关系

eg:手机has a 拍照的功能

飞机 has a 飞行的能力

鸟 has a 飞行的能力

interface体现的是一种能力 ,所以它比abstract class 更加抽象。

package com.bjsxt.interfacedemo;

public interface Fly {


public void flying();//飞行的能力

}


class AirPlane implements Fly

{

@Override

public void flying() { System.out.println("飞机在祖国的蓝天上自由飞

翔..........."); }

}
class Bird implements Fly{

@Override

public void flying() { System.out.println("小鸟唱着动听的歌,在天空

}

1b0909f8d6d92803bed79a153e6dc713.png

package com.bjsxt.interfacedemo;

public class Test {

public static void main(String[] args)

{

//接口类型(引用数据类型)指向实现类的对象

Fly airPlane=new AirPlane();


Fly bird =new Bird();


Fly football=new FootBall();

//调用相同的方法

airPlane.flying();

bird.flying();

football.flying();

//运行结果,不相同

}

}

总结:使用接口实现多态的步骤

(1) 编写接口


(2) 实现类实现接口中的方法

(3) 接口(类型) new 实现类对象

我们以后要做到面向接口的编程 !

第四:

4.内部类详解

4.1 什么是内部类?

将一个类定义在另一个类的内部,该类就称为内部类

4.2 类中定义的内部类特点

  • 1) 内部类作为外部类的成员,可以直接访问外部类的成员 
(包括 private 成员),反之则不行。

(注:当innerclass与outerclass有相同的属性时,在访问outerclass的属性,要加上outerclass_name.this.field_name)

  • 2) 内部类做为外部类成员,可声明为 private、默认、protected 
或 public。 

  • 3) 内部类成员只有在内部类的范围之内是有效的。 

  • 4) 用内部类定义在外部类中不可访问的属性。这样就在外部类中实现了比外部类的 private 还要小的访问权限。 


内部类的优缺点:

优点:内部类可以直接访问外部类的私有属性

缺点:破坏了类的结构

4.2 内部类的分类

1) 成员内部类

内部类相当于外部类的成员

2) 静态内部类

***不允许访问outerclass的非static method

***如果innerclass的method是static的,那么这个innerclass也 应该是static的。

***创建innerclass的object:

new outerclass_name.innerclass_name

3) 方法中的内部类

只能在方法中使用,相当于方法中的局部变量

JDK1.8 新特性

a) JDK1.8 之前方法中的内部类要访问外部类的局部变 
量,必须加上 final 关键字 (常量) 


b) JDK1.8开始,在访问外部类的局部变量时,则可以不加 final 关键字

4) 匿名内部类 (存在继承或实现关系)

  • a) 可以实现一个接口,或者继承一个父类
  • b) 只能实现一个接口 

  • c) 适合创建那种只需要一次使用的类,不能重复使用。 
比较常见的是在图形界面编程 GUI 里用得到。 



第五:

5.String 类常用方法_API 文档阅读

5.1String 类的定义

String 是不可变字符序列

(因为String类相当于char类型的array,而我们知道,数组一旦被声明,数组的length就是固定的了。而且,value的array还使用了final进行修饰。)

5.2String 类的常用方法

  • 1) char charAt(int index)返回字符串中第 index 个字符。 

  • 2) boolean equalsIgnoreCase(String other) 如果字符串与other 
相等(忽略大小写),则返回 true 

  • 3) int indexOf(String str) lastIndexOf() 查找指定字符串 
出现的位置 

  • 4) int length()返回字符串的长度。 


5) String replace(char oldChar,char newChar)返回一个新串,它是通过用 newChar 替换此字符串中出现的所有oldChar 而生成的 所以输出oldchar时,oldchar是不变的。

  • 6) boolean startsWith(String prefix)如果字符串以 prefix 开始, 
则返回 true 

  • 7) boolean endsWith(String prefix) 如果字符串以 prefix 结 
尾,则返回 true 

  • 8) String substring(int beginIndex), 


String substring(int beginIndex,int endIndex)返回一个新字符 串,该串包含从原始字符串 beginIndex 到串尾或 endIndex-1 的所有字符
9) String toLowerCase()返回一个新字符串,该串将原始字符串中的所有大写字母改成小写字母


*10) String toUpperCase()返回一个新字符串,该串将原始字符串中的所有小写字母改成大写字母


*11) String trim() 返回一个新字符串,该串删除了原始字符串头部和尾部的空格 ,但是原始字符串中间如果包含空格的话是不去的。

(但凡返回新字符串,老字符串都不变。)



第六:

6.String 类和常量池

6.1String 类详解

String 类的定义

String 类常用的构造方法

6.2 常量池 用于存储在编译期确定,并被保存在已编译的字节码文件

中的一些数据,包括 final 修饰变量及字符串变量,和符号引 用量。

7b0ad51a914f37a9b4f7924e5669d46f.png

a6600082f30771d69a92f1f3e17e3b29.png

233487d5cdbdb18c32e2057f281aef7d.png

在等号右侧,满足这两个条件时,会在stack中,开辟空间,会有地址。(stack中的address是不连续的)



第七:

7.字符串相等的判断

7.1==” 比较两个字符串内存地址是否相等


7.2 equals(Object obj) 用于比较两个字符串对象的内容是否相等

(注:string class override object class’s equals method.)



第八:

8.设计模式_回调的实现_模板方法模式

8.1 应用场景 客户到银行办理业务

(1) 取号排队
(2) 办理具体现金/转账/企业/个人/理财业务 (3) 给银行工作人员评分
8.2 模板方法模式介绍

它定义了一个操作中的算法骨架,将某些步骤延迟到子类 中实现。这样,新的子类可以在不改变一个算法结构的前 提下重新定义该算法的某些特定步骤。

8.3 核心 处理某个流程的代码已经都具备,但是其中某个节点的代

码暂时不能确定。即:处理步骤在父类中定义好,具体实现

延迟到子类中定义

8.4 案例代码

1/3

49370b54f29d480d0168b4bb524ae386.png

8.5 方法回调(钩子方法)
Don’t call me ,we’ll call you back
找工作的人把简历投递到 XX 公司,所能做的就是等待,

整个过程由公司控制,找工作的人只能等待(公司打电话通 知面试......)

在软件开发中,我们可以将 call 翻译为调用,子类(找工 作的人)不能调用父类(XX 公司),而是通过父类调用子类。 这些调用步骤已经在父类中写好了,完全由父类控制整个过 程。

8.6 什么时候用到模板方法模式

实现一个算法时,整体步骤很固定,但是,某些部分易变,

2/3

易变部分可以抽象成方法,供子类实现

3/3

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于计算机专业的学生而言,参加各类比赛能够带来多方面的益处,具体包括但不限于以下几点: 技能提升: 参与比赛促使学生深入学习和掌握计算机领域的专业知识与技能,如编程语言、算法设计、软件工程、网络安全等。 比赛通常涉及实际问题的解决,有助于将理论知识应用于实践中,增强问题解决能力。 实践经验: 大多数比赛都要求参赛者设计并实现解决方案,这提供了宝贵的动手操作机会,有助于积累项目经验。 实践经验对于计算机专业的学生尤为重要,因为雇主往往更青睐有实际项目背景的候选人。 团队合作: 许多比赛鼓励团队协作,这有助于培养学生的团队精神、沟通技巧和领导能力。 团队合作还能促进学生之间的知识共享和思维碰撞,有助于形成更全面的解决方案。 职业发展: 获奖经历可以显著增强简历的吸引力,为求职或继续深造提供有力支持。 某些比赛可能直接与企业合作,提供实习、工作机会或奖学金,为学生的职业生涯打开更多门路。 网络拓展: 比赛是结识同行业人才的好机会,可以帮助学生建立行业联系,这对于未来的职业发展非常重要。 奖金与荣誉: 许多比赛提供奖金或奖品,这不仅能给予学生经济上的奖励,还能增强其成就感和自信心。 荣誉证书或奖状可以证明学生的成就,对个人品牌建设有积极作用。 创新与研究: 参加比赛可以激发学生的创新思维,推动科研项目的开展,有时甚至能促成学术论文的发表。 个人成长: 在准备和参加比赛的过程中,学生将面临压力与挑战,这有助于培养良好的心理素质和抗压能力。 自我挑战和克服困难的经历对个人成长有着深远的影响。 综上所述,参加计算机领域的比赛对于学生来说是一个全面发展的平台,不仅可以提升专业技能,还能增强团队协作、沟通、解决问题的能力,并为未来的职业生涯奠定坚实的基础。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值